10分钟

任务 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
创建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}
创建角色目录test

2)创建配置文件 mytest.yml,指定主机组 webgroup,指定角色目录 test。

vim /etc/ansible/roles/test/mytest.yml
创建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 集群的自动化部署完成。

执行成功