Ansible Playbook playbook 是由一个或多个模块组成的,使用用多个不同的模块,完成一件事情。 playbook 是通过yaml 语法 识别描述的状态文件,扩展名是yaml yaml 语法三要素 缩进 yaml 使用一个固定的缩进风格表示层级,每个缩进由两个空格组成,不能使用tab键。(默认一个tab键,等于4个空格),我们可以修改vim (.vimrc模板文件,默认为空) 来改变tab的缩进。 cd && vim .vimrc冒号 以冒号结尾的除外,其他所有冒号后面,必须有空格。 短横线 表示列表项,使用一个短横线加一个空格。 多个项使用同样的缩进级别作为同一列表。 +++++++++++++++++++++++++++ playbook的核心元素 hosts:主机清单 tasks:任务 vars:变量 handlers:特定条件触发的任务 template:包含了模板语法的文本文件
+++++++++++++++++++++++++++++++++++ 案例一: ansible playbook 部署Apache: ansible 主机:172.16.1.61 m01 web01 主机:172.16.1.7 web01 一、先要配置免密钥登录 在172.16.1.61 m01 上面操作: ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #这条命令不用一直按回车,就能生成密钥对文件了。大写的P ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.1.7 测试ssh免密钥登录:
+++++++++++++++++++++++ 二、安装ansible 172.16.1.61 m01 上安装 yum install epel-release -y yum install ansible -y 三、编辑ansible hosts 文件 vim /etc/ansible/hosts 在文件的最后面添加,
四、编写playbook 文件 创建存放 playbook文件的目录 mkdir -p /etc/ansible/ansible_playbook cd /etc/ansible/ansible_playbook vim apache.yaml
ansible-playbook 命令的常用选项: ansible-playbook [option] filename 常用选项: -C #模拟运行一次。 --list-hosts #列出剧本主机清单 --list-tags #列出剧本标记 --list-tasks #列出剧本任务 --syntax-check #检查语法 ansible-playbook --syntax-check apache.yaml
根据上面的报错提示,修改apache.yaml 。
重新执行语法检查:cd /etc/ansible/ansible_playbook ansible-playbook --syntax-check apache.yaml
模拟运行: cd /etc/ansible/ansible_playbook && ansible-playbook -C apache.yaml
直接执行:ansible-playbook apache.yaml
客户端检查:
++++++++++++++++++++++++++++++++++ 172.16.1.7 web01 虽然Apache 安装成功了,但是并不是我们实际情况中需要的 Apache 配置文件,这时就需要我们先把Apache配置文件修改好,再推送给客户端。 在本地(ansible主机上)安装一个apache,先修改好配置文件,再推送过去。 在ansible 目录下面创建一个 conf 目录,用于专门存放日志文件 mkdir -p /etc/ansible/ansible_playbook/conf cd /etc/ansible/ansible_playbook/conf cp /etc/httpd/conf/httpd.conf . 比如,修改端口。 sed -i 's#Listen 80#Listen 8080#g' httpd.conf 改完之后,把这个配置文件做到剧本中。 ++++++++++++++++ 修改 apache.yaml vim /etc/ansible/ansible_playbook/apache.yaml
语法检查:
如果这样直接执行(ansible-playbook apache.yaml)了,httpd服务根本就没有重启,配置文件也没有生效。
![]()
还需要重新修改 apache.yaml ,添加一个服务监控项。 cd /etc/ansible/ansible_playbook && vim apache.yaml
保存,退出。 执行:cd /etc/ansible/ansible_playbook && ansible-playbook apache.yaml
查看监听端口:
![]()
+++++++++++++++ END ++++++++++++++++++++