Ansible 使用 Playbook 管理 Nginx 配置文件

  • 前面我们使用ansible下发 并成安装了nginx,但是在日常维护的场景下,我们是需要修改配置文件。因此我们来写一个管理nginx的配置文件的playbook
[root@k8s3 ~]$ mkdir -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}
[root@k8s3 ~]$ tree /etc/ansible/nginx_config/
/etc/ansible/nginx_config/
└── roles               # 定义角色目录,new 为更新时用到的,old 为回滚时用到的
    ├── new 
    │   ├── files       # 存放配置文件的目录
    │   ├── handlers    # 存放当发生变更是要执行的操作,如修改配置文件、重启服务等
    │   ├── tasks       # 存放核心的任务配置文件
    │   └── vars        # 用来定义变量的目录
    └── old
        ├── files
        ├── handlers
        ├── tasks
        └── vars
  • 把配置拷贝至files目录
[root@k8s3 ~]$ cp /usr/local/nginx/conf/nginx.conf /etc/ansible/nginx_config/roles/new/files/
[root@k8s3 ~]$ cp -r /usr/local/nginx/conf/vhost /etc/ansible/nginx_config/roles/new/files/
  • 定义变量
[root@k8s3 ~]$ cd /etc/ansible/nginx_config/roles/
[root@k8s3 roles]$ cat new/vars/main.yml
nginx_basedir: /usr/local/nginx
  • 定义重新加载 Nginx 服务:
[root@k8s3 roles]$ cat new/handlers/main.yml
- name: restart nginx
  shell: /etc/init.d/nginx reload
  • 定义核心任务:
[root@localhost roles]$ cat new/tasks/main.yml
- name: copy conf file
  copy: src={{ item.src }} dest={{ nginx_basedir }}/{{ item.dest }} backup=yes owner=root group=root
  with_items:
    - { src: nginx.conf, dest: conf/nginx.conf }
    - { src: vhost, dest: conf/ }
  notify: restart nginx
  • 定义总入口配置(更新操作):
[root@localhost ~]$ cat /etc/ansible/nginx_config/update.yml
---
- hosts: 192.168.3.42
  user: root
  roles:
    - new
  • 执行
[root@k8s3~]$ ansible-playbook /etc/ansible/nginx_config/update.yml
验证
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容