标签:reload linux 自动化安装 col 变量 new 模板文件 -o 软件包
图解:说明:
系统版本:
CentOS Linux release 7.4.1708 (Core)
需要先在一台机上先装好nginx,再配置ansible服务
1、将替换的文件放入到templates中,ansible可以找到
2、自动化安装时得确定系统版本一致
3、gather_facts: True 获取主机的信息,可以关闭
4、roles目录下有两个角色,common为一些准备操作,install为安装nginx的操作。每个角色下面又有几个目录,handlers下面是当发生改变时要执行的操作,通常用在配置文件发生改变,重启服务。files为安装时用到的一些文件,meta为说明信息,说明角色依赖等信息,tasks里面是核心的配置文件,templates通常存一些配置文件,启动脚本等模板文件,vars下为定义的变量
5、觉得可以用编译好了的nginx包来做,比如在一台机上安装编译好nginx目录,然后打成tar包后,传入到目标主机中,目标主机只需要安装插件即可
6、主函数必须要是main.yml,不然找不到这个就不执行这个
生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下。下面我们来写个管理nginx配置文件的playbook
1、[root@test-01 install]# mkdir -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}
其中new为更新时用到的,old为回滚时用到的,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令
关于回滚,需要在执行playbook之前先备份一下旧的配置,所以对于旧配置文件的管理一定要严格,千万不能随便去修改线上机器的配置,并且要保证new/files下面的配置和线上的配置一致
2、先把nginx.conf和vhosts目录放到files目录下面
3、cp nginx.conf vhost -R /etc/ansible/nginx_config/roles/new/files/
4、 vim /etc/ansible/nginx_config/roles/new/vars/main.yml //定义变量
nginx_basedir: /usr/local/nginx
vim /etc/ansible/nginx_config/roles/new/handlers/main.yml //定义重新加载nginx服务
name: restart nginx
shell: /etc/init.d/nginx reload
vim /etc/ansible/nginx_config/roles/new/tasks/main.yml //这是核心的任务
name: copy conf file
copy: src={{ item.src }} dest={{ nginx_basedir }}/{{ item.dest }} backup=yes owner=root group=root mode=0644 #循环
with_items:
hosts: testhost
user: root
roles:
执行: ansible-playbook /etc/ansible/nginx_config/update.yml
标签:reload linux 自动化安装 col 变量 new 模板文件 -o 软件包
原文地址:http://blog.51cto.com/jacksoner/2141372