目录

#:环境准备参考上篇文章

1、创建一个play, 用来创建用户和用户组

2、创建一个play,用来创建文件并往文件中写入内容, 并压缩

3、创建一个play, 用来安装软件iptables, 并启动服务,然后停止服务

4、创建一个play,完成新建连接并启用

5、创建一个play,完成LVM的配置

首先,关闭node1, 在node1上添加一块硬盘,2GB

第一个任务:为磁盘设置第一个分区:500MB, flags=lvm

第二个任务:为磁盘设置第二个分区:500MB, flags=lvm

第三个任务:为磁盘设置第三个分区:500MB, flags=lvm

第四个任务:使用上边建立的三个分区,建立PV和VG(使用lvg模块)

第五个任务:使用上面建立的vg建立逻辑卷(lv), lv大小为1.2GB

第六个任务:为上面建立的lv建立文件系统,类型为xfs

第七个任务:将上面建立的逻辑卷挂载到/mount_data目录下

第八个任务:在/mount_data下创建文件data.txt

#:环境准备参考上篇文章

1、创建一个play, 用来创建用户和用户组

创建用户usertest并指定uid为2000,shell类型为/bin/sh
创建用户组grouptest 并指定gid为1999

[root@manage ansible]# pwd
/root/ansible

[root@manage ansible]# vim xht1.yaml  创建并进入编写

---
- name: play1
  hosts: node1
  tasks:
    - name: usertest exists with UID 2000
      user:
        name: usertest
        uid: 2000
        shell: "/bin/sh"
- name: play2
  hosts: node1
  tasks:
    - name: geouptest exists with GID 1999
      group:
        name: grouptest
        gid: 1999

...

:wq 保存并退出

验证

[root@manage ansible]# ansible-playbook xht1.yaml 

PLAY [play1] **********************************************************************

TASK [Gathering Facts] ************************************************************
ok: [node1]

TASK [usertest exists with UID 2000] **********************************************
changed: [node1]

PLAY [play2] **********************************************************************

TASK [Gathering Facts] ************************************************************
ok: [node1]

TASK [geouptest exists with GID 1999] *********************************************
changed: [node1]

PLAY RECAP ************************************************************************
node1                      : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

在node1上验证一下

[root@node1 ~]# cat /etc/passwd | grep usertest
usertest:x:2000:2000::/home/usertest:/bin/sh
[root@node1 ~]# cat /etc/group | grep grouptest
grouptest:x:1999:

成功创建

2、创建一个play,用来创建文件并往文件中写入内容, 并压缩

第一个任务:创建一个data.txt文件,
第二个任务:写入:This file is for archive
第三个任务: 压缩文件 data.txt为data.tar.gz

[root@manage ansible]# vim xht2.yaml  创建并进入编写

---
- name:
  hosts: node1
  tasks:
    - name: filecreat
      file:
        path: ~/test/data.txt     # 我是在~/test/下创建的,node1上没有的可以先创建一下
        state: touch
    - name: txtinsert
      lineinfile:
        path: ~/test/data.txt
        line: "This file is for archive"
    - name: tar
      archive:
        path: ~/test/data.txt
        dest: ~/test/data.tar.gz
        format: gz
...

:wq 保存并退出

验证

[root@manage ansible]# ansible-playbook xht2.yaml 

PLAY [node1] *********************************************************************************

TASK [Gathering Facts] ***********************************************************************
ok: [node1]

TASK [filecreat] *****************************************************************************
changed: [node1]

TASK [txtinsert] *****************************************************************************
ok: [node1]

TASK [tar] ***********************************************************************************
ok: [node1]

PLAY RECAP ***********************************************************************************
node1                      : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

在node1上验证一下

[root@node1 ~]# cd ~/test/
[root@node1 test]# ll
total 8
-rw-r--r--. 1 root root 51 Nov 18 12:12 data.tar.gz
-rw-r--r--. 1 root root 25 Nov 18 12:12 data.txt
[root@node1 test]# cat data.txt
This file is for archive

成功执行

3、创建一个play, 用来安装软件iptables, 并启动服务,然后停止服务

第一个任务:安装iptables
第二个任务:启动服务
第三个任务:停止服务

[root@manage ansible]# vim xht3.yaml  创建并进入编写

---
- name:
  hosts: node1
  tasks:
    - name: yumiptb
      yum:
        name: iptables-services.x86_64
        disable_gpg_check: yes
    - name: start
      service:
        name: iptables
        state: started
    - name: stop
      service:
        name: iptables
        state: stopped
...

:wq 保存并退出

验证

[root@manage ansible]# ansible-playbook xht3.yaml 

PLAY [node1] *********************************************************************************

TASK [Gathering Facts] ***********************************************************************
ok: [node1]

TASK [yumiptb] *******************************************************************************
ok: [node1]

TASK [start] *********************************************************************************
changed: [node1]

TASK [stop] **********************************************************************************
changed: [node1]

PLAY RECAP ***********************************************************************************
node1                      : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

在node1上查看状态是否为最后一个任务的停止

[root@node1 test]# systemctl status iptables
● iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disable>
   Active: inactive (dead)

Nov 18 12:18:55 node1 systemd[1]: iptables.service: Succeeded.
Nov 18 12:18:55 node1 systemd[1]: Stopped IPv4 firewall with iptables.
Nov 18 12:20:36 node1 systemd[1]: Starting IPv4 firewall with iptables...
Nov 18 12:20:36 node1 iptables.init[22362]: iptables: Applying firewall rules: [  OK  ]
Nov 18 12:20:36 node1 systemd[1]: Started IPv4 firewall with iptables.
Nov 18 12:20:37 node1 systemd[1]: Stopping IPv4 firewall with iptables...
Nov 18 12:20:37 node1 iptables.init[22530]: iptables: Setting chains to policy ACCEPT: raw ma>
Nov 18 12:20:37 node1 iptables.init[22530]: iptables: Flushing firewall rules: [  OK  ]
Nov 18 12:20:37 node1 systemd[1]: iptables.service: Succeeded.
Nov 18 12:20:37 node1 systemd[1]: Stopped IPv4 firewall with iptables.

成功执行

4、创建一个play,完成新建连接并启用

首先,关闭node1, 添加一块网卡
创建任务,在新添加的网卡上新建连接

[root@manage ansible]# vim xht4.yaml  创建并进入编写

---
- name:
  hosts: node1
  tasks:
    - name: ensadd
      nmcli:
        conn_name: newens
        ip4: 192.168.153.131/24
        gw4: 192.168.153.2
        dns4: 114.114.114.114
        state: present
        type: bond
...

: wq 保存并退出

验证

[root@manage ansible]# ansible-playbook xht4.yaml 

PLAY [node1] *********************************************************************************

TASK [Gathering Facts] ***********************************************************************
ok: [node1]

TASK [ensadd] ********************************************************************************
changed: [node1]

PLAY RECAP ***********************************************************************************
node1                      : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

在node1上查看是否创建成功

[root@node1 ~]# nmcli c
NAME    UUID                                  TYPE      DEVICE 
ens160  5507556e-920b-45bb-8467-7a68f1aba802  ethernet  ens160 
newens  c2d472a2-68e1-408d-9d10-7ec0645a743a  bond      newens 
virbr0  a8efc39a-5a12-4891-8686-b859dbda07b9  bridge    virbr0

使用新建网卡进行连接

[C:\~]$ ssh 192.168.153.131


Connecting to 192.168.153.131:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Activate the web console with: systemctl enable --now cockpit.socket

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last login: Sat Nov 19 00:46:28 2022 from 192.168.153.1
Session lifetime based on X11 requested, but X11 initialization failed.
[root@node1 ~]#

成功执行

5、创建一个play,完成LVM的配置

首先,关闭node1, 在node1上添加一块硬盘,2GB

ansible playbook cp模块 ansible playbook file模块_创建文件

第一个任务:为磁盘设置第一个分区:500MB, flags=lvm

[root@manage ansible]# vim xht5.yaml

---
- name:
  hosts: node1
  tasks:
    - name: dev1
      parted:
        device: /dev/nvme0n3
        number: 1
        part_start: 1MB
        part_end: 500MB
        flags: lvm
        state: present

第二个任务:为磁盘设置第二个分区:500MB, flags=lvm

- name: dev2
      parted:
        device: /dev/nvme0n3
        number: 2
        part_start: 501MB
        part_end: 1000MB
        flags: lvm
        state: present

第三个任务:为磁盘设置第三个分区:500MB, flags=lvm

- name: dev3
      parted:
        device: /dev/nvme0n3
        number: 3
        part_start: 1001MB
        part_end: 1500MB
        flags: lvm
        state: present

第四个任务:使用上边建立的三个分区,建立PV和VG(使用lvg模块)

- name: dev4
      lvg:
        pvs: /dev/nvme0n3p1,/dev/nvme0n3p2,/dev/nvme0n3p3
        vg: vg1

第五个任务:使用上面建立的vg建立逻辑卷(lv), lv大小为1.2GB

- name: dev5
      lvol:
        vg: vg1
        lv: lv1
        size: 1200

第六个任务:为上面建立的lv建立文件系统,类型为xfs

- name: dev6
      filesystem:
        dev: /dev/vg1/lv1
        fstype: xfs

第七个任务:将上面建立的逻辑卷挂载到/mount_data目录下

- name: dev7
      mount:
        fstype: xfs
        path: /mount_data
        src: /dev/vg1/lv1
        state: mounted

第八个任务:在/mount_data下创建文件data.txt

- name: dev8
      file:
        state: touch
        path: /mount_data/data.txt
...

 合并在一起

---
- name:
  hosts: node1
  tasks:
    - name: dev1
      parted:
        device: /dev/nvme0n3
        number: 1
        part_start: 1MB
        part_end: 500MB
        flags: lvm
        state: present
    - name: dev2
      parted:
        device: /dev/nvme0n3
        number: 2
        part_start: 501MB
        part_end: 1000MB
        flags: lvm
        state: present
    - name: dev3
      parted:
        device: /dev/nvme0n3
        number: 3
        part_start: 1001MB
        part_end: 1500MB
        flags: lvm
        state: present
    - name: dev4
      lvg:
        pvs: /dev/nvme0n3p1,/dev/nvme0n3p2,/dev/nvme0n3p3
        vg: vg1
    - name: dev5
      lvol:
        vg: vg1
        lv: lv1
        size: 1200
    - name: dev6
      filesystem:
        dev: /dev/vg1/lv1
        fstype: xfs
    - name: dev7
      mount:
        fstype: xfs
        path: /mount_data
        src: /dev/vg1/lv1
        state: mounted
    - name: dev8
      file:
        state: touch
        path: /mount_data/data.txt
...

验证

[root@manage ansible]# ansible-playbook xht5.yaml 

PLAY [node1] ******************************************************************************************

TASK [Gathering Facts] ********************************************************************************
ok: [node1]

TASK [dev1] *******************************************************************************************
changed: [node1]

TASK [dev2] *******************************************************************************************
changed: [node1]

TASK [dev3] *******************************************************************************************
changed: [node1]

TASK [dev4] *******************************************************************************************
changed: [node1]

TASK [dev5] *******************************************************************************************
changed: [node1]

TASK [dev6] *******************************************************************************************
changed: [node1]

TASK [dev7] *******************************************************************************************
changed: [node1]

TASK [dev8] *******************************************************************************************
changed: [node1]

PLAY RECAP ********************************************************************************************
node1                      : ok=9    changed=8    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

在node1上查看是否成功

[root@node1 ~]# lsblk 
NAME           MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0             11:0    1  10.2G  0 rom   
nvme0n3        259:7    0     2G  0 disk 
├─nvme0n3p1    259:8    0   476M  0 part 
│ └─vg1-lv1    253:4    0   1.2G  0 lvm  /mount_data
├─nvme0n3p2    259:9    0   476M  0 part 
│ └─vg1-lv1    253:4    0   1.2G  0 lvm  /mount_data
└─nvme0n3p3    259:10   0 475.9M  0 part 
  └─vg1-lv1    253:4    0   1.2G  0 lvm  /mount_data
[root@node1 ~]# ll /mount_data/data.txt 
-rw-r--r--. 1 root root 0 Nov 19 06:07 /mount_data/data.txt