1. 为什么使用Ansible项目,而不是直接使用系统的Ansible配置。
使用Ansible项目可以更好地组织、管理和维护Ansible配置,提高可维护性、复用性和安全性,便于团队协作和扩展。
2. Ansible项目由哪些目录组成。
3. 这些目录的作用是什么。
2&3、
/inventory:存放主机清单文件,定义被管理的主机或主机组。
/group vars:存放组变量文件,定义特定主机组的变量/host vars:存放主机变量文件,定义特定主机的变量。
/roles:存放Ansible角色,每个角色是一个独立的目录,包含任务、变量、模板等。
/playbooks:存放Ansible剧本文件,定义要执行的务流程。
/ibrary:存放自定义的Ansible模块,
/flter plugins:存放自定义的过滤器插件。
/fles:存放剧本中需要传输的文件。
/templates:存放Jinia2模板文件,用于生成配置文件等配置文件
ansible.cfg:Ansible的主配置文件,用于配置Ansible的全局设置。
requirements.yml:定义项目依赖的角色和集合,可以使用ansible-galaxy安装
练习任务:
在playbook中实现以下目标
1. 从主控节点复制一个文件到其他机器。
2. 更新被控节点的系统。
3. 复制某个被控节点的文件到主控节点。
4. 使用apt模块在被控节点上安装Nginx,并设置为开机不启动。
5. 在playbook中定义一个变量,通过变量的形式将每个机器的IP地址写入到被控机器中的/opt/ip.txt中。
6. 替换上面/opt/ip.txt的IP地址,IP地址的前两段替换为111.222。
7. 在playbook中插入一个task,使用错误的shell命令(比如:aabb /xxx),并忽略错误让playbook可以继续执行。
yaml文件代码块:
- name: test
hosts: all
become: yes
vars:
ip_address: |
192.168.75.130
192.168.75.131
192.168.75.132
192.168.75.133
tasks:
- name: test
ansible.builtin.copy:
src: /opt/test.tar.gz
dest: /opt/Ansible_Test
owner: root
group: root
mode: '0644'
- name: 更新所有包
apt:
upgrade: dist
update_cache: yes
- name: Install Nginx
apt:
name: nginx
state: latest
- name: shutdown nginx service
systemd: name=nginx state=started enabled=no
- name: Create a file with some content
ansible.builtin.copy:
dest: /opt/ip.txt
content:
"{{ ip_address }}"
- name: Replace IP address segments
replace:
path: /opt/ip.txt
regexp: '(\d{1,3}\.){2}'
replace: '111.222.'
- name: 执行
shell: aabb /xxx
ignore_errors: yes执行成功截图: