Ansible 项目实战
- 1.安装和配置Ansible
- 2.创建和运行 Ansible 临时命令
- 3.安装软件包
- 4.使用 RHEL 系统角色
- 5.使用 Ansible Galaxy 安装角色
- 6.创建和使用角色
- 7.从 Ansible Galaxy 使用角色
- 8.创建和使用逻辑卷
- 9.生成主机文件
- 10.修改文件内容
- 11.创建web内容目录
- 12.生成硬件报告
- 13.创建密码库
- 14.创建用户账户
- 15.更新 Ansible 库的密钥
1.安装和配置Ansible
按照下方所述,在控制节点 172.25.250.254 上安装和配置 Ansible:
安装所需的软件包创建名为 /home/devops/ansible/inventory 的静态
清单文件,以满足以下要求:
172.25.250.9 是 dev 主机组的成员
172.25.250.10 是 test 主机组的成员
172.25.250.11 和 172.25.250.12 是 prod 主机组的成员
172.25.250.13 是 balancers 主机组的成员
prod 组是 webservers 主机组的成员
创建名为 /home/devops/ansible/ansible.cfg 的配置文件,以满足以
下要求:
主机清单文件为 /home/devops/ansible/inventory
playbook 中使用的角色的位置包括 /home/devops/ansible/roles
考点:ansible提权配置,ansible主机清单编写
[student@workstation]$ sudo yum -y install ansible
[sudo] password for devops
: redhat
……
[student@workstation]$ mkdir ansible
[student@workstation ansible]$ vim /home/student/ansible/inventory
[dev]
servera
[test]
serverb
[prod]
serverc
serverd
[balancers]
serverd
[webservers:children]
prod
[student@workstation ansible]$ vim /home/devops/ansible/ansible.cfg
[defaults]
inventory = /home/student/ansible/inventory
remote_user = devops
roles_path = /home/student/ansible/roles
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[student@workstation ansible]$ mkdir roles
[student@workstation ansible]$ ansible all m ping
serverb | SUCCESS => {
"changed": false,
"ping": "pong"
}
serverd | SUCCESS => {
"changed": false,
"ping": "pong"
}
serverc | SUCCESS => {
"changed": false,
"ping": "pong"
}
servera | SUCCESS => {
"changed": false,
"ping": "pong"
}
2.创建和运行 Ansible 临时命令
作为系统管理员,您需要在受管节点上安装软件。
请按照正文所述,创建一个名为 /home/devops/ansible/adhoc.sh 的
shell 脚本,该脚本将使用
Ansible 临时命令在各个受管节点上安装 yum 存储库:
存储库 1:
存储库的名称为 EX294_BASE
描述为 EX294 base software
基础 URL 为 ftp://host.domain8.rhce.cc/dvd/BaseOS
GPG 签名检查为启用状态
GPG 密钥 URL 为 ftp://host.domain8.rhce.cc/dvd/RPM-GPG-KEY-redhat-release
存储库为启用状态
存储库 2:
存储库的名称为 EX294_STREAM
描述为 EX294 stream software基础 URL 为
ftp://host.domain8.rhce.cc/dvd/AppStream
GPG 签名检查为启用状态
GPG 密钥 URL 为 ftp://host.domain8.rhce.cc/dvd/RPMGPGKEY-redhat-release
存储库为启用状态
考点:yum_repository 模块使用,是一个用于配置yum源的模块
- name #存储库的名字
- description #描述
- file #yum仓库的文件名
- baseurl #yum源的地址
- gpgcheck #是否检查签名
- gpgkey #key的地址
- enabled #是否启用
[student@workstation ansible]$ vim adhoc.sh
#!/bin/bash
ansible all -m yum_repository -a "name=EX294_BASE
description='EX294 base software' file=rhel_dvd
baseurl=ftp://host.domain8.rhce.cc/dvd/BaseOS gpgcheck=yes
gpgkey=ftp://host.domain8.rhce.cc/dvd/RPMGPGKEYredhatrelease
enabled=yes"
ansible all -m yum_repository -a "name=EX294_STREAM
description='EX294 stream software' file=rhel_dvd
baseurl=ftp://host.domain8.rhce.cc/dvd/AppStream gpgcheck=yes
gpgkey=ftp://host.domain8.rhce.cc/dvd/RPMGPGKEYredhatrelease
enabled=yes"
[student@workstation ansible]$ chmod a+x adhoc.sh
[student@workstation ansible]$ ./adhoc.sh
serverd | CHANGED => {
"changed": true,
"repo": "EX294_STREAM",
"state": "present"
}
servera | CHANGED => {
"changed": true,
"changed": true,
"repo": "EX294_STREAM",
"state": "present"
}
serverc | CHANGED => {
"changed": true,
"repo": "EX294_STREAM",
"state": "present"
}
serverb | CHANGED => {
"changed": true,
"repo": "EX294_STREAM",
"state": "present"
}
3.安装软件包
创建一个名为 /home/devops/ansible/packages.yml 的 playbook :
将 php 和 mariadb 软件包安装到 dev、test 和 prod 主机组中的主机
上
将 RPM Development Tools 软件包组安装到 dev 主机组中的主机上
将 dev 主机组中主机上的所有软件包更新为最新版本
考点:yum模块的使用安装软件包组时需要在前面加@符号,还有注意的是,每隔一个等级空两格,present 代表安装,latest代表安装最新版本
---
- name: install pkg
hosts: dev,test,prod
tasks:
- name: install php and mariadb
yum:
name:
- php*
- mariadb*
state: present
- name: install group tools
hosts: dev
tasks:
- name: install Development Tools
yum:
name: "@Development Tools"
state: present
- name: update all pkg
yum:
name: "*"
state: latest
4.使用 RHEL 系统角色
安装 RHEL 系统角色软件包,并创建符合以下条件的 playbook
/home/devops/ansible/timesync.yml :在所有受管节点上运行
使用 timesync 角色
配置该角色,以使用当前有效的 NTP 提供商
配置该角色,以使用时间服务器 172.25.250.250
配置该角色,以启用 iburst 参数
考点:
1.redhat系统角色
在当前版本中,Red Hat提供了五类角色集,分别是:kdump,postfix,network,selinux和timesync,系统角色,简单来说就是系统自带的roles
更多请详情:https://searchdatacenter.techtarget.com.cn/9-30278/
[root@workstation ~]# yum -y install rhel-system-roles
[root@workstation ~]# su - student
[student@workstation ~]$ cd ansible/
[student@workstation ansible]$ mkdir roles
[student@workstation ansible]$ cp -a /usr/share/ansible/roles/rhel-systemroles.time
sync/ roles/timesync
[student@workstation ansible]$ vim timesync.yml
---
- hosts: all
vars:
timesync_ntp_servers:
- hostname: 172.25.250.250
iburst: yes
timesync_ntp_provider: chrony
roles:
- timesync
post_tasks: //如果没有要求配置时区,下列操作可以不需要
- name: set timezone
timezone:
name: Asia/Shanghai
notify: restart crond
handlers:
- name: restart crond
service:
name: crond
state: restarted
5.使用 Ansible Galaxy 安装角色
使用名字为文件 /home/student/ansible/roles/requirements.yml 下
载并安装 Ansible Galaxy 角
色。从下列 URL 下载 :
http://host.domain8.rhce.cc/ex300/haproxy.tar.gz 此角色的名
称应当为 balancer
http://host.domain8.rhce.cc/ex300/phpinfo.tar.gz 此角色的名
称应当为 phpinfo
考点:将地址编写进yml并安装ansible-galaxy -r 指定源,-p指定目的
[student@workstation ansible]$ vim roles/requirements.yml
- name: balancer
src: http://host.domain8.rhce.cc/ex300/haproxy.tar.gz
- name: phpinfo
src: http://host.domain8.rhce.cc/ex300/phpinfo.tar.gz
[student@workstation ansible]$ ansible-galaxy install -r roles/requirements.yml -p
roles
6.创建和使用角色
根据下列要求,在 /home/student/ansible/roles 中创建名为 apache
的角色:
httpd 软件包已安装,设为在系统启动时启用并启动
防火墙已启用并正在运行,并使用允许访问 Web 服务器的规则
模板文件为 index.html.j2 ,用于创建具有以下输出的文件
/var/www/html/index.html :
Welcome to HOSTNAME on IPADDRESS
其中,HOSTNAME 是受管节点的完全限定域名,IPADDRESS 则是受管节点的
IP 地址。
创建名为 newroles.yml 的 playbook,使用这个角色,对 webservers
组进行操作。
HOSTNAME 是 FQDN 的完整主机名称
考点:
ansble的service模块,firewall模块,template模块
防火墙模块的使用:
firewalld: zone=public service=http state=enabled permanent=yes immediate=yes
#防火墙模块 设置区域 放通服务 状态启用 是否保存为永久 立刻启用
Ansible roles使用,系统变量 ansible_fqdn ,ansible_default_ipv4.address
fqdn 调用的是被执行playbook主机的域名,ipv4.address是主机的ip地址
[student@workstation ansible]$ cd roles/
[student@workstation roles]$ ansible-galaxy init apache
[student@workstation roles]$ vim apache/tasks/main.yml
---
# tasks file for apache
- name: install http
yum:
name: httpd
state: present
- name: config system service
service:
name: "{{ item }}"
state: started
enabled: yes
loop:
- httpd
- firewalld
- name: firewalld service
firewalld:
zone: public
service: http
permanent: yes
immediate: yes
state: enabled
- name: user templates
template:
src: index.html.j2
dest: /var/www/html/index.html
[student@workstation roles]$ vim apache/templates/index.html.j2
Welcome to {{ ansible_fqdn }} on {{ ansible_default_ipv4.address }}
[student@workstation roles]$ cd ..
[student@workstation ansible]$
[student@workstation ansible]$ vim newrole.yml
---
- name: use apache role
hosts: webservers
roles:
- apache
[student@workstation ansible]$ ansible-playbook newrole.yml
[student@workstation ansible]$ curl serverc
Welcome to serverc.lab.example.com on 172.25.250.12
[student@workstation ansible]$ curl serverd
Welcome to serverd.lab.example.com on 172.25.250.13
7.从 Ansible Galaxy 使用角色
根据下列要求,创建一个名为 /home/student/ansible/roles.yml 的
playbook :
playbook 中包含一个 play,该 play 在 balancers 主机组中的主机上
运行并将使用 balancer
角色。
此角色配置一项服务,以在 webservers 主机组中的主机之间平衡 Web 服
务器请求的负载。
浏览到 balancers 主机组中的主机(例如 http://172.25.250.13 )将
生成以下输出:
Welcome to serverc.domain8.rhce.cc on 172.25.250.11
重新加载浏览器将从另一 Web 服务器生成输出:
Welcome to serverd.domain8.rhce.cc on 172.25.250.12
playbook 中包含一个 play,该 play 在 webservers 主机组中的主机
上运行并将使用 phpinfo
角色。
请通过 URL /hello.php 浏览到 webservers 主机组中的主机将生成以下
输出:
Hello PHP World from FQDN
其中,FQDN 是主机的完全限定名称。
Hello PHP World from serverb.lab.example.com
另外还有 PHP 配置的各种详细信息,如安装的 PHP 版本等。
同样,浏览到 http://172.25.250.12/hello.php 会生成以下输出:
Hello PHP World from serverc.lab.example.com
另外还有 PHP 配置的各种详细信息,如安装的 PHP 版本等。
别看他写了这么多其实都不用管,只需调用第六题下载的roles 即可肥肠的简单
考点:针对balancers组使用 balancer角色
针对websers组使用phpinfo角色
[student@workstation ansible]$ vim roles.yml
- name: gather fact
hosts: webservers
gather_facts: false
tasks:
- name: test gather facts
setup:
- name: config balancer
hosts: balancers
roles:
- balancer
- name: config php webserver
hosts: webservers
roles:
- phpinfo
[student@workstation ansible]$ ansible-playbook roles.yml
[student@workstation ansible]$ curl http://bastion.lab.example.com/
Welcome to serverc.lab.example.com on 172.25.250.12
[student@workstation ansible]$ curl http://bastion.lab.example.com/
Welcome to serverd.lab.example.com on 172.25.250.13
[student@workstation ansible]$ curl http://serverc.lab.example.com/hello.php
Hello PHP World form serverc.lab.example.com
[student@workstation ansible]$ curl http://serverd.lab.example.com/hello.php
Hello PHP World form serverd.lab.example.com
8.创建和使用逻辑卷
创建一个名为 /home/devops/ansible/lv.yml 的 playbook ,它将在
所有受管节点上运行以执行
下列任务:
创建符合以下要求的逻辑卷:
逻辑卷创建在 research 卷组中
逻辑卷名称为 data
逻辑卷大小为 1500 MiB
使用 ext4 文件系统格式化逻辑卷
如果无法创建请求的逻辑卷大小,应显示错误信息 Could not create
logical volume of that
size,并且应改为使用大小 800 MiB。
如果卷组 research 不存在,应显示错误信息 Volume group done not
exist。
不要以任何方式挂载逻辑卷
考点:
- Lvol模块,是ansible用于创建PV的模块,他的参数顾名思义vg就是用于指定卷组 的的名字,lv 就是执行逻辑卷的名字
- debug:用于调试输出的模块,msg:调试输出的消息
- block 定义要运行的任务
- rescue:拯救,执行定义 block 运行失败时执行的任务,成功则跳过
- always 定义独立任务,不受block和rescue的影响
- when:用于判断,当when的条件不成立时,与其对应的模块不会执行
- when “’research‘ in ansible_lvm.vgs” 判断目标客户端中是否有research这个
卷组,如果有则为真,如果没有则为假 - ansible_lvm.vgs 是ansible默认执行的gather_facts组件,他用于收集客户端的一些信息
- 通过 ansible servera -m setup 可以查看到所有收集到的信息
- filesysrem模块用于格式化,fstype用于指定格式,dev用于指定目标硬盘位置 **
[student@workstation ansible]$ vim lvm_pre.yml
- name: create volume group
hosts: dev,test
tasks:
- name: Create partition for LVM
parted:
device: /dev/vdb
number: 1
flags: [ lvm ]
state: present
part_start: 1MiB
part_end: 2GiB
- name: create research vg
lvg:
vg: research
pvs: /dev/vdb1
- name: create volume group
hosts: prod
tasks:
- name: Create partition for LVM
parted:
device: /dev/vdb
number: 1
flags: [ lvm ]
state: present
part_start: 1MiB
part_end: 1GiB
- name: create research vg
lvg:
vg: research
pvs: /dev/vdb1
[student@workstation ansible]$ ansible-playbook lvm_pre.yml
[student@workstation ansible]$ for i in server{a..d};do ssh root@$i 'vgs';done
- name: create lvm
hosts: all
tasks:
- name: create logical volume
block:
- name: create lvm 1500m
lvol:
vg: research
lv: data
size: 1500m
rescue:
- name: output fail msg
debug:
msg: Could not create logical volume of that size
- name: create lvm 800m
lvol:
vg: research
lv: data
size: 800m
always:
- name: format lvm
filesystem:
fstype: ext4
dev: /dev/research/data
- name: mount file system //如果需要挂载
mount:
path: /nepart //挂载目录
src: /dev/vdb1 //需要挂载的分区
state: mounted //挂载状态
fstype: ext4 //格式
when: "'research' in ansible_facts.lvm.vgs"
- name: search not exists
debug:
msg: Volume group does not exist
when: "'research' not in ansible_facts.lvm.vgs"
9.生成主机文件
将一个初始模板文件从
http://host.domain8.rhce.cc/ex300/hosts.j2 下载
到/home/student/ansible
完成该模板,以便用它生成以下文件:针对每个清单主机包含一行内容,其格式
与
/etc/hosts 相同
创建名为 /home/student/ansible/hosts.yml 的 playbook,它将使用
此模板在 dev 主机组中的主机上生成文件 /etc/myhosts 。
该 playbook 运行后, dev 主机组中主机上的文件 /etc/myhosts 应针
对每个受管主机包含
一行内容:
127.0.0.1 localhost localhost.localdomain localhost4
localhost4.localdomain4 ::1 localhost
localhost.localdomain localhost6 localhost6.localdomain6
172.25.250.9 workstation.lab.example.com workstation
172.25.250.10 servera.lab.example.com servera
172.25.250.11 serverb.lab.example.com serverb
172.25.250.12 serverc.lab.example.com serverc
172.25.250.13 serverd.lab.example.com serverd
考点:
1.jinja2模板
2.魔法变量 group_names: 列出当前受管理主机所属的所有组,gruop列出清单中所有的主机和组
hostsvars:列出当前所有受管理的主机信息
3.ansible facts 获取客户端的参数
ansible_fqdn是域名参数,ansible_enp1s0.ipv4.address 是ip地址参数
ansible_hostname是主机名
[student@workstation ansible]$ wget http://172.25.254.254/content/hosts.j2
[student@workstation ansible]$ vim hosts.yml
- name: gather facts
hosts: all
- name: config myhosts
hosts: dev
tasks:
- name: copy hosts.j2 to dev
template:
src: hosts.j2
dest: /etc/myhosts
[student@workstation ansible]$ ssh root@servera 'cat /etc/myhosts'
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.250.10 servera.lab.example.com servera
172.25.250.11 serverb.lab.example.com serverb
172.25.250.254 bastion.lab.example.com bastion
172.25.250.12 serverc.lab.example.com serverc
172.25.250.13 serverd.lab.example.com serverd
10.修改文件内容
按照下方所述,创建一个名为 /home/devops/ansible/issue.yml 的
playbook :
该 playbook 将在所有清单主机上运行
该 playbook 会将 /etc/issue 的内容替换为下方所示的一行文本:
在 dev 主机组中的主机上,这行文本显示 为:Development
在 test 主机组中的主机上,这行文本显示 为:Test
在 prod 主机组中的主机上,这行文本显示 为:Production
[student@workstation ansible]$ vim issue.yml
- name: modify issue file
hosts: all
tasks:
- name: write something to /etc/issue
copy:
content: |
{% if 'dev' in group_names %}
Development
{% elif 'test' in group_names %}
Test
{% elif 'prod' in group_names %}
Production
{% endif %}
dest: /etc/issue
[student@workstation ansible]$ for i in server{a..d} bastion ; do ssh root@$i 'cat
/etc/issue'; done
Development
Test
Production
Production
11.创建web内容目录
按照下方所述,创建一个名为 /home/student/ansible/webcontent.yml
的 playbook :
该 playbook 在 dev 主机组中的受管节点上运行
创建符合下列要求的目录 /webdev :
所有者为 webdev 组
具有常规权限:owner=read+write+execute ,
group=read+write+execute,
other=read+execute
具有特殊权限:设置组 ID
用符号链接将 /var/www/html/webdev 链接到 /webdev
创建文件 /webdev/index.html ,其中包含如下所示的单行文件:
Development
在 dev 主机组中主机上浏览此目录(例如
http://172.25.250.9/webdev/ )将生成以下
输出:
Development
考点:
firewalld模块,file模块创建软连接,传输文本,创建文件夹等操作
[student@workstation ansible]$ vim webcontent.yml
- name: Create web directory
hosts: dev
tasks:
- name: install httpd
yum:
name: httpd
state: present
- name: enable httpd
service:
name: httpd
enabled: yes
state: started
- name: enable 80/tcp
firewalld:
zone: public
service: http
immediate: yes
permanent: yes
state: enabled
- name: Create webdev directory
file:
path: /webdev
state: directory
owner: root
group: devops
mode: '2775'
- name: Create file
copy:
content: "Devlopment\n"
dest: /webdev/index.html
- name: Create soft link
file:
src: /webdev
dest: /var/www/html/webdev
state: link
- name: modify sefcontext
sefcontext:
target: '/webdev(/.*)?'
setype: httpd_sys_content_t
state: present
- name: Apply new SELinux file context to /webdev
shell: restorecon -R /webdev
[student@workstation ansible]$ curl http://servera.lab.example.com/webdev/
Devlopment
12.生成硬件报告
创建一个名为 /home/student/ansible/hwreport.yml 的 playbook ,
它将在所有受管节点上生成
含有以下信息的输出文件 /root/hwreport.txt :
清单主机名称
以 MB 表示的总内存大小
BIOS 版本
磁盘设备 vda 的大小
磁盘设备 vdb 的大小
输出文件中的每一行含有一个 key=value 对。
您的 playbook 应当:
从 http://host/ex300/hwreport.empty 下载文件,并将它保存为
/root/hwreport.txt
使用正确的值改为 /root/hwreport.txt
如果硬件项不存在,相关的值应设为 NONE
考点:
1.replace 模块,
模块参数:path 文件位置,regexp;正则匹配文本的内容,repalce;替换文本的内容
2.get_url 模块,用于下载url位置文件,参数 url;网址 dest;目标位置和名字
- name: Get hwreport info
hosts: all
tasks:
- name: Create report file
get_url:
url: http://172.25.254.254/content/hwreport.empty
dest: /root/hwreport.txt
- name: Get inventory_hostname
replace:
path: /root/hwreport.txt
regexp: 'inventoryhostname'
replace: '{{ inventory_hostname }}'
- name: Get memory total size
replace:
path: /root/hwreport.txt
regexp: 'memory_in_MB'
replace: "{{ ansible_memtotal_mb | string}}"
- name: Get bios version
replace:
path: /root/hwreport.txt
regexp: 'BIOS_version'
replace: "{{ ansible_bios_version }}"
- name: Get disk vda size
replace:
path: /root/hwreport.txt
regexp: 'disk_vda_size'
replace: "{{ ansible_devices.vda.size | default('NONE') }}"
- name: Get disk vdb size
replace:
path: /root/hwreport.txt
regexp: 'disk_vdb_size'
replace: "{{ ansible_devices.vdb.size | default('NONE') }}"
13.创建密码库
按照下方所述,创建一个 Ansible 库来存储用户密码:
库名称为 /home/devops/ansible/locker.yml
库中含有两个变量,名称如下:
pw_developer,值为 redhat
pw_manager,值为 redhat
用于加密和解密该库的密码为 redhat
密码存储在文件 /home/devops/ansible/secret.txt 中
考点:
ansible-vult 使用文件加密
[student@workstation ansible]$ vim locker.yml
pw_developer: Imadev
pw_manager: Imamgr
[student@workstation ansible]$ echo whenyouwishuponastar > secret.txt
[student@workstation ansible]$ ansible-vault --vault-password-file=secret.txt encry
pt locker.yml
[student@workstation ansible]$ ansible-vault view locker.yml
Vault password: # 输⼊密码
pw_developer: Imadev
pw_manager: Imamgr
14.创建用户账户
从 http://host/ex300/user_list.yml 下载要创建的用户的列表,并将
它保存到
/home/student/ansible
在本次考试中使用在其他位置创建的密码库
/home/student/ansible/locker.yml 。创建名为
/home/student/ansible/users.yml 的 playbook ,从而按以下所述创
建用户帐户:
职位描述为 developer 的用户应当:
在 dev 和 test 主机组中的受管节点上创建
从 pw_developer 变量分配密码
是附属组 devops 的成员
职位描述为 manager 的用户应当:
在 prod 主机组中的受管节点上创建
从 pw_manager 变量分配密码
是附属组 opsmgr 的成员
密码采用 SHA512 哈希格式。
您的 playbook 应能够在本次考试中使用在其他位置创建的库密码文件
/home/student/ansible/secret.txt 正常运行。
考点:
1.loop循环,vars_files变量导入与调用,when的使用,user模块
2.group模块:
参数 :name 必须参数 指定要操作的组名称,state:两个选项 1.present 创建组 2.absent删除组
gid: 用于指定gid
[student@workstation ansible]$wget http://172.25.254.254/content/user_list.yml
[student@workstation ansible]$ vim users.yml
- name: Create developer user
hosts: dev, test
vars_files:
- locker.yml
- user_list.yml
tasks:
- name: Ensure group "student" exists
group:
name: student
state: present
- name: Create user in developer
user:
name: "{{ item.name }}"
groups: student
password: "{{ pw_developer | password_hash('sha512') }}"
loop: "{{ users }}"
when: item.job == "developer"
- name: Create manager user
hosts: prod
vars_files:
- locker.yml
- user_list.yml
tasks:
- name: Ensure group "opsmgr" exists
group:
name: opsmgr
state: present
- name: Create user in manager
user:
name: "{{ item.name }}"
groups: opsmgr
password: "{{ pw_manager | password_hash('sha512') }}"
loop: "{{ users }}"
when: item.job == "manager"
[student@workstation ansible]$ ansible-playbook --vault-password-file=secret.txt us
ers.yml
15.更新 Ansible 库的密钥
按照下方所述,更新现有 Ansible 库的密钥:
从 http://classroom.example.com/materials/salaries.yml 下载
Ansible 库到 /home/devops/ansible
当前的库密码为 insecuresure
新的库密码为 redhat
库使用新密码保持加密状态
考点:ansible-vault 的修改密码
[student@workstation ansible]$ wget http://172.25.254.254/content/salaries.yml
[student@workstation ansible]$ ansible-vault rekey salaries.yml
Vault password: # 输⼊旧密码insecuresure
New Vault password: # 输⼊新密码redhat
Confirm New Vault password: # 输⼊新密码redhat
Rekey successful