Ansible自动运维————实验

铁佛  金牌会员 | 2024-6-15 03:19:37 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 540|帖子 540|积分 1620

0、创建新的虚拟机,使用镜像RHEL8.5,要求/boot目录为512N,/home目录为1Gb,互换空间为2Gb,其他空间给)目录。
  1、将该主机作为 Ansible 控制节点,克隆该虚拟机,将克隆的虚拟机作为受控节点,Ansible 仓库路径为 http://47.108.86.156/rhel8/ansible29/ansible-2.9-for-rhel-8-x86_64-rpms/

  2、在控制节点上创建角色exam,该角色将在受控节点上完成以下任务∶

  2.1,创建本地共享目录/home/materials,其所属组为sysadms, sysadms组成员对目录有修改目录里文件内容、长列表查察内容和进入该目录的权限,除此之外别的用户没有任何权限。

  2.2.将系统光盘挂在载/mnt目录下,并且开机自动挂载,将控制节点本地的 rpm. repo 文件作为受控节点的yum源设置文件内容,该仓库无需开后gpg查抄,设置完成后,安装httpd软件包,后动该服务并让该服务开机自启动。

  2.3,创建一个sysadms组,创建两个用户 natasha和 harry 以该组为附属组,创建用户sarah,并且 sarah使用非交互式shell,该用户也不属于sysadms组,三个用户的密码都是compedel。

  2.4.在根目录下创建一个目录test,在该目录中每个用户创建的文件只能本身有权限删除,其他用户没有权限删除,但是该目录对于hehe用户用全部的权限,该目录当中有一个可执行程序configtest.sh,该文件是系统/usr/bin/touch。

  可执行程序的副本,该程序任何人都可以执行,但是每个人通过该程序创建的文件全部者都为redhat。

  2.5、给受控节点添加sata接口、大小为10Gb大小和nvme接口、大小为20Gb大小的两块磁盘,完成以下需求∶

  〉使用这两块磁盘创建卷组名称为testgroup 的卷组,使用该卷组创建testlv名称的逻辑卷,该逻辑卷大小为25Gb,并将该逻辑卷格式化为xfs格式,开机自动挂载到/exam目录。
  〉使用testgroup卷组创建swaplv逻辑卷,大小为1Gb,作为互换空间并开机自动启用。
  
  解题
  0、创建新的虚拟机,使用镜像RHEL8.5,要求/boot目录为512N,/home 目录为 1Gb,互换空间为26b,其他空间给╱目录。
  1、将该主机作为 Ansible控制节点,克隆该虚拟机,将克隆的虚拟机作为受控节点,Ansible 仓库路怪为 httpd://47.108.86.156/rhel8/ansible29/ansible-2.9-for-rhel-8-x86_64-rpms/
   先挂载仓库下载dnf ,再挂载ansible仓库下载ansible
              
            [root@localhost ansible]# yum install dnf
              
            [root@localhost ansible]# dnf install ansible
  2、在控制节点上创建角色exam,该角色将在受控节点上完成以下任务:
   [root@localhost ansible]# ansible-galaxy init exam //创建exam角色
   2.1,创建本地共享目录/home/materials,其所属组为sysadms, sysadms组成员对目录有修改目录里文件内容、长列表查察内容和进入该目录的权限,除此之外别的用户没有任何权限。
  1. - name: exam  #创建组
  2.   group:               
  3.     name: sysadms
  4.     state: present     #创建
  5. - name: file #设置组权限
  6.   file:
  7.     group: sysadms
  8.     path: /home/materials
  9.     mode: '2770'
  10.     state: directory   
复制代码
            
            2.2.将系统光盘挂在载/mnt目录下,并且开机自动挂载,将控制节点本地的rpm.repo文件作为受控节点的 yum源设置文件内容,该仓库无需开启gpg查抄,设置完成后,安装httpd软件包,后动该服务并让该服务开机自启动。
  1. - name:  mount and turn on auto mount
  2.   mount:
  3.       src: /dev/sr0       #挂载设备
  4.       path: /mnt          #挂载点
  5.       fstype: iso9660   #文件系统类型
  6.       state: present
  7. - name: install yum repo
  8.   copy:
  9.       src: /dev/yum.repos.d/rpm.repo
  10.       dest: /etc/yum.repos.d/
  11. - name: httpd installd      #安装httpd软件包
  12.   yum:
  13.       name: httpd
  14.       state: latest          #最新版本
  15. - name: start httpd service
  16.   service:
  17.       name: httpd
  18.       enabled: true        #开机自启动  
  19.       state: started
复制代码
            
           2.3,创建一个sysadms组,创建两个用户 natasha和 harry 以该组为附属组,创建用户 sarah,并且 sarah使用非交互式shell,该用户也不属于sysadms组,三个用户的密码都是compede
  1. - name: create group sysadms    #创建sysadms组
  2.   group:
  3.     name: sysadms
  4.     state: present
  5. - name: create user natesha and harry #创建两个用户,为sysadms组附属组并设置密码
  6.   user:
  7.     name: "{{item.user}}"
  8.     group: sysadms
  9.     password: "{{'compedel'}}"
  10.   loop:
  11.     - {user: natasha}
  12.     - {user: harry}    //会出现警告,但不是错误,不要紧
  13. - name: create user sarah  #创建用户 sarah,并且 sarah使用非交互式shell,该用户也不属于sysadms组,并设置密码
  14.   user:
  15.     name: sarah
  16.     shell: /user/bin/false
  17.     password: "{{'compedel'}}"
复制代码
            
           2.4,在根目录下创建一个目录 test,在该目录中每个用户创建的文件只能本身有权限删除,其他用户没有权限删除,但是该目录对于hehe用户用全部的权限,该目录当中有一个可执行程序configtest.sh ,该文件是系统/usr/bin/touch 可执行程序的副本,该程序任何人都可以执行,但是每个人通过该程序创建的文件全部者都为redhat。
  1. - name: create directory test     #创建目录test并设置权限
  2.   file:
  3.     path: /test
  4.     state: directory
  5.     mode: '1777'
  6. - name: set permissions        #设置hehe用户的权限
  7.   acl:
  8.     path: /test
  9.     entity: hehe
  10.     etype: user
  11.     permissions: rwx
  12.     state: present
  13. - name: user hehe #创建用户hehe
  14.   user:
  15.     name: hehe
  16. - name: owner  #创建所有者
  17.   user:
  18.     name: redhat
  19. - name: configtest.sh
  20.   copy:
  21.     src: /usr/bin/touch
  22.     dest: /test/configtest.sh
  23.     owner: redhat
  24.     mode: '4777'
复制代码
            
           copy模块的作用就是拷贝文件,将ansible主机上的文件拷贝到长途主机中。
  src参数 :用于指定需要copy的文件或目录
  dest参数 :用于指定文件将被拷贝到长途主机的哪个目录中,dest为必须参数
  content参数 :当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。
  force参数 : 当长途主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容差别时,是否逼迫覆盖,可选值有yes和no,默认值为yes,表现覆盖,假如设置为no,则不会执行覆盖拷贝操纵,长途主机中的文件保持不变。
  backup参数 : 当长途主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容差别时,是否对长途主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份长途主机中的文件,然后再将ansible主机中的文件拷贝到长途主机。
  owner参数 : 指定文件拷贝到长途主机后的属主,但是长途主机上必须有对应的用户,否则会报错。
  group参数 : 指定文件拷贝到长途主机后的属组,但是长途主机上必须有对应的组,否则会报错。
  mode参数 : 指定文件拷贝到长途主机后的权限,假如你想将权限设置为"rw-r--r--",则可以使用mode=0644表现,假如你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表现。
  2.5、给受控节点添加sata接口、大小为10Gb大小和nvme接口、大小为20Gb大小的两块磁盘,完成以下需求∶
              
           留意:在虚拟机在关机状态下设置
              
           〉使用这两块磁盘创建卷组名称为testgroup 的卷组,使用该卷组创建testlv 名称的逻辑卷,该运辑卷大小为25Gb,并将该逻辑卷格式化为xfs格式,开机自动挂载到/exam目录。
  1. - name: create lvg testgroup #使用这两块磁盘创建卷组名称为testgroup
  2.   lvg:
  3.     vg: testgroup
  4.     pvs: /dev/nvme0n2,/dev/sda
  5.     state: present  #可不写,默认是present
  6. - name: create lvol testlv #使用testgroup卷组创建testlv名称的逻辑卷,并设置大小
  7.   lvol:
  8.     vg: testgroup
  9.     lv: testlv
  10.     size: 25G
  11.     state: present  #可不写,默认是present
  12. - name: filesystem xfs  #逻辑卷格式化为xfs
  13.   filesystem:
  14.     fstype: xfs
  15.     dev: /dev/mapper/testgroup-testlv
  16. - name: mkdir /exam
  17.   file:
  18.     path: /exam
  19.     state: directory
  20. - name: mount  #自动挂载到/exam目录
  21.   mount:
  22.     src: /dev/mapper/testgroup-testlv
  23.     path: /exam
  24.     fstype: xfs
  25.     state: present
复制代码
〉使用testgroup卷组创建swaplv逻辑卷,大小为 1Gb,作为互换空间并开机自动后用。
  1. - name: create lvol swaplv  #使用testgroup卷组创建testlv名称的逻辑卷,并设置大小
  2.   lvol:
  3.     vg: testgroup
  4.     lv: swaplv
  5.     size: 1G
  6. - name: filesystem swap  #逻辑卷格式化为swap
  7.   filesystem:
  8.     fstype: swap
  9.     dev: /dev/mapper/testgroup-swaplv
  10. - name: mount
  11.   mount:
  12.     src: /dev/mapper/testgroup-swaplv
  13.     path: /exam
  14.     fstypy: swap
  15.     state: present
复制代码
lvg模块 创建卷组

  
vg 界说卷组名

  
state {present 创建,absent 删除}

  
pvs 指定物理卷

  
pesize 界说pe大小

  
lvol模块 创建逻辑卷

  
lv 界说逻辑卷名

  
size 界说逻辑卷大小

  
vg 空间来自哪个卷组

  
state{present 创建,absent 删除}

  
force=yes 逼迫执行

  filesystem模块
  • 用于格式化,也就是创建文件系统
  • 常用选项:
  – fstype:指定文件系统类型
  – dev:指定要格式化的设备,可以是分区,可以是逻辑卷
  mount模块
  • 用于挂载文件系统
  • 常用选项:
  – path:挂载点。假如挂载点不存在,自动创建。
  – src:待挂载的设备
  – fstype:文件系统类型,
  – state:mounted表现永久挂载 ,设备将被主动安装,并在fstab中得当设置。假如挂载点不存在,则将创建挂载点。
   unmounted 设备将卸载而不更改fstab。
   present仅指定设备将在fstab中设置﹐不会触发或要求挂载。
   absent表现设备支架的条目将从fstab中删除还将卸载设备并删除挂载点。
   remounted指定当您想逼迫刷新挂载本身时,设备将被重新安装。
  
  看案例:
              
                       
                       
           运行playbook:
  验证语法是否有误: ansible-playbook --syntax-check playbook的名称
  运行playbook: ansible-playbook playbook的名称
              
           
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表