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

执行成功截图:

以他人的幸福为幸福,以他人的享乐为享乐。