ansible安装及ssh免密登录请参考:https://blog.csdn.net/hdyebd/article/details/90295314
ansible-playbook //剧本
ansible-doc //获取帮助文档
ansible-playbook 详解
-
ansible playbook采用YAML语法
-
YAML的语法和其他高阶语言类似并且可以简单表达清单、散列表、标量等数据结构。(列表用横杆表示,键值对用冒号分割,键值对里又可以嵌套另外的键值对)
-
YAML文件扩展名通常为.yaml或者.yml。
-
-
核心组件
- hosts:主机IP或域名
- tasks:任务
- variables:变量
- templates:模板
- handlers:处理器
- roles:角色
hosts 定义单个主机或组,vars定义变量,remote_user定义执行命令的远程用户,tasks定义执行哪些命令,handlers定义调用哪些处理器
使用ansible-playbook安装nginx
环境:
ansible:192.168.192.138
client:192.168.192.137
client:192.168.192.138
操作
-
因为不确定客户端有没有nginx包,所以要对客户端进行epel配置,从服务端将文件拷贝过去。
服务端epel配置[root@localhost ~]# vim /etc/yum.repos.d/epel.repo [epel] name=epel_name baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/ gpgcheck=0 #写一个文件模块,规定在哪几台机器上操作,这里使用all模块 [root@localhost ~]# cat /etc/ansible/hosts [test] 192.168.192.137 [web] 192.168.192.139 [all] 192.168.192.137 192.168.192.139 #将服务端文件拷贝到client端 [root@localhost ~]# ansible -i /etc/ansible/hosts all -m copy -a "src=//etc/yum.repos.d/epel.repo dest=/etc/yum.repos.d/epel.repo owner=root group=root mode=644 backup=yes"
-
写一个playbook剧本
[root@localhost ~]# cat /etc/ansible/playbook/yum_nginx.yml --- - hosts: 192.168.192.137 192.168.192.139 tasks: - name: install nginx yum: name=nginx state=present - name: copy nginx.conf copy: src=/etc/nginx/nginx.conf.j2 dest=/etc/nginx/nginx.conf - name: start nginx service: name=nginx state=started enabled=yes #执行此剧本,使其在client实现 [root@localhost ~]# ansible-playbook /etc/ansible/playbook/yum_nginx.yml
-
去浏览器查看