任务 4 编写 playbook 脚本
任务目标
为了达到实验的最终目标,实现对 web 集群的自动化部署。我们需要修改 ansible 的配置文件,创建 yml 文件和 Test.sh 文件指定主机组并在其中编写 playbook 任务,最终完成搭建自动化部署 web 集群任务。
任务步骤
1.修改 ansible 的配置文件
vim /etc/ansible/ansible.cfg
在文件末尾加入以下配置信息:
sudo_user=root
remote_port=22
remote_user=root
module_name=command
command_warnings=False
inventory=/etc/ansible/hosts
roles_path=/etc/ansible/roles
log_path=/var/log/ansible.log
private_key_file=/root/.ssh/id_rsa
说明:
- sudo_user:ansible sudo 用户,填写成CVM默认用户名 root 即可;
- remote_port:ansible 远程认证端口,填写成CVM默认端口 22 即可;
- remote_user:ansible 远程认证用户,填写成CVM默认用户名 root 即可;
- module_name:ansible默认执行模块,填写成默认值 command 即可;
- command_warnings:命令警告,填写成默认值 False 即可;
- inventory:ansible inventory文件路径,填写成默认值 /etc/ansible/hosts 即可;
- roles_path:ansible role存放路径,填写成默认值 /etc/ansible/roles 即可;
- log_path:ansible日志记录文件,填写成默认值 /var/log/ansible.log 即可;
- private_key_file:私钥文件存放位置,填写成默认值 /root/.ssh/id_rsa 即可。
2.创建并配置部署文件
创建 sh 文件并修改配置,通过更改文件权限,便于后续编写 playbook 并将其部署到每台部署机上
1)创建名为“Test.sh”的文件,并在其中加入“Web Automated deployment completed”作为内容标记。
echo "Web Automated deployment completed" > /root/Test.sh
2)拷贝“Test.sh”文件到主机清单的每台主机上。
ansible webgroup -m copy -a "src=/root/Test.sh dest=/root/"
查看到显示“CHANGED”字样,表示该文件已拷贝成功。
3)使用以下命令,执行“chmod 755 /root/Test.sh”命令,作用是更改文件权限,便于后续操作。将权限变为:
- 文件所有者可读可写可执行;
- 与文件所有者同属一个用户组的其他用户可读可执行;
- 其它用户组可读可执行
ansible webgroup -m shell -a "chmod 755 /root/Test.sh"
3.调用playbook 任务
调用每台部署机(“serverB”和“serverC”服务器)的 playbook 任务执行
1)创建角色目录 test。
mkdir -p /etc/ansible/roles/test/{default,files,handlers,meta,tasks,templates,vars}
2)创建配置文件 mytest.yml,指定主机组 webgroup,指定角色目录 test。
vim /etc/ansible/roles/test/mytest.yml
---
- hosts: webgroup
remote_user: root
roles:
- test
3)创建任务脚本。
vim /etc/ansible/roles/test/tasks/main.yml
---
- name: copy Test.sh to client
copy: src=/root/Test.sh dest=/root/Test.sh
- name: chmod for Test.sh
shell: chmod 755 /root/Test.sh
shell: sh /root/Test.sh
4)修改 Test.sh 中的脚本命令,搭建 Apache 网址。
vim /root/Test.sh
将其中的信息改为以下命令,这些命令可以完成搭建网址的作用。
yum install -y httpd
echo "Web Automated deployment completed" >>/var/www/html/index.html
systemctl restart httpd
systemctl enable httpd
4.检查和执行脚本
1)使用以下命令检查脚本。
ansible-playbook -C /etc/ansible/roles/test/mytest.yml
执行后出现以下信息,则表示脚本没有错误,信息更改成功。
2)使用以下命令执行脚本。
ansible-playbook /etc/ansible/roles/test/mytest.yml
执行后出现以下信息,则表示脚本执行成功,web 集群的自动化部署完成。
学员评价