一. 安装和配置 Ansible
1.安装所需的软件包
sudo yum install ansible -y
mkdir /home/greg/ansible/
cd /home/greg/ansible/
2.创建名为 /home/greg/ansible/inventory 的静态清单文件,以满足以下要求
node1 是 dev 主机组的成员
node2 是 test 主机组的成员
node3 和 node4 是 prod 主机组的成员
node5 是 balancers 主机组的成员
prod 组是 webservers 主机组的成员
vim /home/greg/ansible/inventory
[dev]
node1
[test]
node2
[prod]
node3
node4
[balancers]
node5
[webservers:children]
prod
3.创建名为 /home/greg/ansible/ansible.cfg 的配置文件,以满足以下要求
主机清单文件为 /home/greg/ansible/inventory
playbook 中使用的角色的位置包括 /home/greg/ansible/roles
cp /etc/ansible/ansible.cfg /home/greg/ansible/
vim /home/greg/ansible/ansible.cfg
二.创建和运行 Ansible 临时命令
作为系统管理员,您需要在受管节点上安装软件。请按照正文所述,创建一个名为/home/greg/ansible/adhoc.sh 的 shell 脚本,该脚本将使用 Ansible 临时命令在各个受管节点上安装 yum 存储库
vim /home/greg/ansible/adhoc.sh
ansible-doc -l | grep yum
chmod +x /home/greg/ansible/adhoc.sh
三.安装软件包
创建一个名为 /home/greg/ansible/packages.yml 的 playbook
1.将 php 和 mariadb 软件包安装到 dev、test 和 prod 主机组中的主机上
ansible-doc yum
/EX
2.将 RPM Development Tools 软件包组安装到 dev 主机组中的主机上
3.将 dev 主机组中主机上的所有软件包更新为最新版本
四.A 使用 RHEL 系统角色
安装 RHEL 系统角色软件包,并创建符合以下条件的 playbook /home/greg/ansible/selinux.yml
cd /
yum search role
sudo yum install rhel-system-roles.noarch -y
ansible-galaxy list
cd -
vim /home/greg/ansible/ansible.cfg
ansible-galaxy list
rpm -ql rhel-system-roles | grep selinux
cp /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml /home/greg/ansible/selinux.yml
vim /home/greg/ansible/selinux.yml
1.在所有受管节点上运行
2.使用 selinux 角色
3.配置该角色,配置被管理节点的 selinux 为enforcing
四.B 使用 RHEL 系统角色(OLD)
安装 RHEL 系统角色软件包,并创建符合以下条件的 playbook /home/greg/ansible/timesync.yml
cp -r /usr/share/ansible/roles/rhel-system-roles.timesync/ /home/greg/ansible/roles/
ansible-galaxy list
rpm -ql rhel-system-roles | grep timesync
vim /home/greg/ansible/timesync.yml
1.在所有受管节点上运行
2.使用 timesync 角色
3.配置该角色,以使用当前有效的 NTP 提供商
4.配置该角色,以使用时间服务器 172.25.254.254
5.配置该角色,以启用 iburst 参数
五.使用 Ansible Galaxy 安装角色
使用 Ansible Galaxy 安装角色
vim /home/greg/ansible/roles/requirements.yml
六.创建和使用角色
根据下列要求,在 /home/greg/ansible/roles 中创建名为 apache 的角色
ansible-galaxy init roles/apache
1.httpd 软件包已安装,设为在系统启动时启用并启动
2.防火墙已启用并正在运行,并使用允许访问 Web 服务器的规则
3.模板文件 index.html.j2 已存在,用于创建具有以下输出的文件 /var/www/html/index.html
1 Welcome to HOSTNAME on IPADDRESS
其中,HOSTNAME 是受管节点的完全限定域名,IPADDRESS 则是受管节点的 IP 地址。
vim roles/apache/templates/index.html
ansible node1 -m setup -a filter=*nodename*
ansible node1 -m setup -a filter=*ipv4*
创建一个名为 /home/greg/ansible/apache.yml 的 playbook:
vim /home/greg/ansible/apache.yml
4.该 play 在 webservers 主机组中的主机上运行并将使用 apache 角色
ansible-playbook apache.yml
七.从 Ansible Galaxy 使用角色
vim /home/greg/ansible/roles.yml
八.A 创建和使用分区(NEW)
创建一个名为 /home/greg/ansible/partition.yml 的 playbook ,它将在所有受管节点上创建分区
vim /home/greg/ansible/partition.yml
1.在vdb创建一个1500M主分区,分区号1,并格式化ext4
ansible-doc parted
ansible-doc filesystem
2.prod组将分区永久挂载到/data
ansible-doc mount
3.如果磁盘空间不够,给出提示信息Could not create partition of that size创建800MiB分区
ansible-doc debug
ansible node2 -m setup -a filter=*dev*
4.如果 vdb不存在,则给出提示信息this disk is not exist
八.B 创建和使用逻辑卷(OLD)
创建一个名为 /home/greg/ansible/lv.yml 的 playbook ,它将在所有受管节点上运行以执行下列任务
vim /home/greg/ansible/lv.yml
1.创建符合以下要求的逻辑卷:
逻辑卷创建在 research 卷组中
逻辑卷名称为 data
逻辑卷大小为 1500 MiB
ansible-doc lvol
2.使用 ext4 文件系统格式化逻辑卷
如果无法创建请求的逻辑卷大小,应显示错误信息
1 Could not create logical volume of that size
并且应改为使用大小 800 MiB。
如果卷组 research 不存在,应显示错误信息
1 Volume group done not exist
不要以任何方式挂载逻辑卷
ansible-doc filesystem
ansible-doc debug
ansible node2 -m setup -a fileter=*dev*
九. 生成主机文件
1.将一个初始模板文件从 http://materials/hosts.j2 下载到 /home/greg/ansible
wget http://materials/hosts.j2
2.完成该模板,以便用它生成以下文件:针对每个清单主机包含一行内容,其格式与 /etc/hosts 相同
vim hosts.j2
3.创建名为 /home/greg/ansible/hosts.yml 的 playbook ,它将使用此模板在 dev 主机组中的主机上生成文件 /etc/myhosts 。
vim /home/greg/ansible/hosts.yml
ansible-doc template
十.修改文件内容
按照下方所述,创建一个名为 /home/greg/ansible/issue.yml 的 playbook
vim /home/greg/ansible/issue.yml
1.该 playbook 将在所有清单主机上运行
ansible-doc copy
2.该 playbook 会将 /etc/issue 的内容替换为下方所示的一行文本:
在 dev 主机组中的主机上,这行文本显示 为:Development
在 test 主机组中的主机上,这行文本显示 为:Test
在 prod 主机组中的主机上,这行文本显示为:Production
十一.创建 Web 内容目录
按照下方所述,创建一个名为 /home/greg/ansible/webcontent.yml 的 playbook
vim /home/greg/ansible/webcontent.yml
1.该 playbook 在 dev 主机组中的受管节点上运行
2.创建符合下列要求的目录 /webdev :
所有者为 webdev 组
具有常规权限:owner=read+write+execute , group=read+write+execute ,other=read+execute具有特殊权限:设置组 ID
ansible-doc file
3.用符号链接将 /var/www/html/webdev 链接到 /webdev
4.创建文件 /webdev/index.html ,其中包含如下所示的单行文件: Development
5.在 dev 主机组中主机上浏览此目录(例如 http://172.25.250.9/webdev/ )将生成以下输出:
1 Development
ansible-doc copy
man semanage fcontext
十二.生成硬件报告
创建一个名为 /home/greg/ansible/hwreport.yml 的 playbook ,它将在所有受管节点上生成含有以下信息的输出文件 /root/hwreport.txt
vim /home/greg/ansible/hwreport.yml
打开hw report
ansible-doc lineinfile
1.清单主机名称
2.以 MB 表示的总内存大小
3.BIOS 版本
4.磁盘设备 vda 的大小
5.磁盘设备 vdb 的大小
6.输出文件中的每一行含有一个 key=value 对。
您的 playbook 应当:
7.从 http://materials/hwreport.empty 下载文件,并将它保存为 /root/hwreport.txt
ansible-doc get_url
8.使用正确的值改为 /root/hwreport.txt
9.如果硬件项不存在,相关的值应设为 NONE
所有的都要加
十五.更新 Ansible 库的密钥
按照下方所述,更新现有 Ansible 库的密钥
1.从 http://materials/salaries.yml 下载 Ansible 库到 /home/greg/ansible
wget http://materials/salaries.yml
2.当前的库密码为 insecure8sure
3.新的库密码为 bbs2you9527
ansible-vault rekey salaries.yml
4.库使用新密码保持加密状态
十三.创建密码库
按照下方所述,创建一个 Ansible 库来存储用户密码
1.库名称为 /home/greg/ansible/locker.yml
ansible-vault create /home/greg/ansible/locker.yml
2.库中含有两个变量,名称如下:
pw_developer,值为 Imadev
pw_manager,值为 Imamgr
3.用于加密和解密该库的密码为 whenyouwishuponastar
4.密码存储在文件 /home/greg/ansible/secret.txt 中
echo whenyouwishuponastar > /home/greg/ansible/secret.txt
vim /home/greg/ansible/ansible.cfg
vault_password_file = /home/greg/ansible/secret.txt
十四. 创建用户帐户
1.从 http://materials/user_list.yml 下载要创建的用户的列表,并将它保存到 /home/greg/ansible
wget http://materials/user_list.yml
2.在本次练习中使用在其他位置创建的密码库 /home/greg/ansible/locker.yml 。创建名为 /home/greg/ansible/users.yml 的 playbook ,从而按以下所述创建用户帐户:
vim /home/greg/ansible/users.yml
2.1职位描述为 developer 的用户应当:
在 dev 和 test 主机组中的受管节点上创建
从 pw_developer 变量分配密码
是补充组 devops 的成员
ansible-doc group
ansible-doc user
2.2职位描述为 manager 的用户应当:
在 prod 主机组中的受管节点上创建
从 pw_manager 变量分配密码
是补充组 opsmgr 的成员
3.密码采用 SHA512 哈希格式。
4.您的 playbook 应能够在本次练习中使用在其他位置创建的库密码文件 /home/greg/ansible/secret.txt 正常运行。
十六.配置 cron 作业(增加)
创建一个名为 /home/greg/ansible/cron.yml 的 playbook :
vim /home/greg/ansible/cron.yml
1.该 playbook 在 test 主机组中的受管节点上运行
2.配置 cron 作业,该作业每隔 2 分钟运行并执行以下命令:
3.logger "EX200 in progress",以用户 natasha 身份运行
ansible-doc cron