RedHat红帽认证---RHCE

这篇具有很好参考价值的文章主要介绍了RedHat红帽认证---RHCE。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RedHat红帽认证---RHCE

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


RHCE

1.安装和配置 Ansible

    安装和配置 Ansible

    按照下方所述,在控制节点 control 上安装和配置 Ansible:

        安装所需的软件包

        创建名为 /home/greg/ansible/inventory 的静态清单文件,以满足以下要求:

            node1 是 dev 主机组的成员

            node2 是 test 主机组的成员

            node3 和 node4 是 prod 主机组的成员

            node5 是 balancers 主机组的成员

            prod 组是 webservers 主机组的成员

        创建名为 /home/greg/ansible/ansible.cfg 的配置文件,以满足以下要求:

            主机清单文件为 /home/greg/ansible/inventory

            playbook 中使用的角色的位置包括 /home/greg/ansible/roles
#1.连接至普通用户greg,控制节点control
[kiosk@foundation0 ~]$ ssh greg@control

#2.安装ansible软件包
[greg@control ~]$ sudo yum install -y ansible
[greg@control ~]$ rpm -q ansible 
ansible-2.9.15-1.el8ae.noarch

#3.创建角色路径,并进入ansible目录
[greg@control ~]$ mkdir -p /home/greg/ansible/roles
[greg@control ~]$ cd ansible/
[greg@control ansible]$ 

#4.创建名为 /home/greg/ansible/ansible.cfg 的配置文件
[greg@control ansible]$ ansible --version
  config file = /etc/ansible/ansible.cfg

[greg@control ansible]$ cp /etc/ansible/ansible.cfg .

[greg@control ansible]$ ansible --version
  config file = /home/greg/ansible/ansible.cfg
 
[greg@control ansible]$ ls
ansible.cfg  roles

#5.修改配置文件,在配置文件做免密操作
[greg@control ansible]$ vim ansible.cfg 

inventory      = /home/greg/ansible/inventory		#清单文件路径
#inventory      = /etc/ansible/hosts

/host
host_key_checking = False							#是否指纹解锁
#host_key_checking = False

/remote
remote_user = root									#远程用户身份为root
#remote_user = root

/become
[privilege_escalation]
become=True											#sudo提权
become_method=sudo
become_user=root
become_ask_pass=False

#6.编写主机清单,在主机清单做免密操作
[greg@control ansible]$ vim /home/greg/ansible/inventory

[all:vars]
ansible_password=flectrag

[dev]
node1

[test]
node2

[prod]
node3
node4

[balancers]
node5

[webservers:children]
prod

#7.进入ansible主配置文件,修改角色路径
[greg@control ansible]$ vim ansible.cfg 
roles_path    = /home/greg/ansible/roles
#roles_path    = /etc/ansible/roles

#8.检查清单是否正确
[greg@control ansible]$ ansible-inventory --graph			#查看清单树
@all:
  |--@balancers:
  |  |--node5
  |--@dev:
  |  |--node1
  |--@test:
  |  |--node2
  |--@ungrouped:
  |--@webservers:
  |  |--@prod:
  |  |  |--node3
  |  |  |--node4
  
  #9.测试免密
[greg@control ansible]$ ansible all -a "hostname"
node4 | CHANGED | rc=0 >>
node4.lab.example.com

2.创建和运行 Ansible 临时命令

    创建和运行 Ansible 临时命令

    作为系统管理员,您需要在受管节点上安装软件。

    请按照正文所述,创建一个名为 /home/greg/ansible/adhoc.sh 的 shell 脚本,该脚本将使用 Ansible 临时命令在各个受管节点上安装 yum 存储库:

    存储库1:

        存储库的名称为 EX294_BASE

        描述为 EX294 base software

        基础 URL 为 http://content/rhel8.4/x86_64/dvd/BaseOS

        GPG 签名检查为启用状态

        GPG 密钥 URL 为 http://content/rhel8.4/x86_64/dvd/RPM-GPG-KEY-redhat-release

        存储库为启用状态

    存储库2:

        存储库的名称为 EX294_STREAM

        描述为 EX294 stream software

        基础 URL 为 http://content/rhel8.4/x86_64/dvd/AppStream

        GPG 签名检查为启用状态

        GPG 密钥 URL 为 http://content/rhel8.4/x86_64/dvd/RPM-GPG-KEY-redhat-release

        存储库为启用状态
#ansible-doc查询文档
[greg@control ansible]$ ansible-doc -l | grep yum
yum                                                         
yum_repository 

[greg@control ansible]$ ansible-doc yum_repository 
/EX
gg
/gpgkey
/enabled

#2.创建shell脚本文件
[greg@control ansible]$ vim /home/greg/ansible/adhoc.sh
=========================================================================================
#!/bin/bash

ansible all -m yum_repository -a "name=EX294_BASE description='EX294 base software' baseurl=http://content/rhel8.4/x86_64/dvd/BaseOS gpgcheck=yes gpgkey=http://content/rhel8.4/x86_64/dvd/RPM-GPG-KEY-redhat-release enabled=yes"
ansible all -m yum_repository -a "name=EX294_STREAM description='EX294 stream software' baseurl=http://content/rhel8.4/x86_64/dvd/AppStream gpgcheck=yes gpgkey=http://content/rhel8.4/x86_64/dvd/RPM-GPG-KEY-redhat-release enabled=yes"
=========================================================================================

#3.shell脚本文件添加执行权限,并运行
[greg@control ansible]$ chmod +x /home/greg/ansible/adhoc.sh
[greg@control ansible]$ vim /home/greg/ansible/adhoc.sh
[greg@control ansible]$ /home/greg/ansible/adhoc.sh

#4.测试,验证
[greg@control ansible]$ ansible all -a "yum install -y ftp"
Complete!

3.安装软件包

    安装软件包

    创建一个名为 /home/greg/ansible/packages.yml 的 playbook :

        将 php 和 mariadb 软件包安装到 dev、test 和 prod 主机组中的主机上

        将 RPM Development Tools 软件包组安装到 dev 主机组中的主机上

        将 dev 主机组中主机上的所有软件包更新为最新版本
#1.设置行号显示,设置Tab格式
[greg@control ansible]$ vim ~/.vimrc
set number ts=2 sw=2 et

#2.创建playbook,编写playbook
[greg@control ansible]$ ansible-doc yum
/EX

- name: ensure a list of packages installed
  yum:
    name: "{{ packages }}"
  vars:
    packages:
    - httpd
    - httpd-tools

- name: install the 'Development tools' package group
  yum:
    name: "@Development tools"
    state: present

- name: upgrade all packages
  yum:
    name: '*'
    state: latest

[greg@control ansible]$ vim /home/greg/ansible/packages.yml
=========================================================================================  1 ---
  2 - name: 安装软件包
  3   hosts: dev,test,prod
  4   tasks:
  5   - name: ensure a list of packages installed
  6     yum:
  7       name: "{{ packages }}"
  8     vars:
  9       packages:
 10       - php
 11       - mariadb
 12 
 13 - name: 安装软件包2
 14   hosts: dev
 15   tasks:
 16   - name: install the package group
 17     yum:
 18       name: "@RPM Development Tools"
 19       state: present
 20   - name: upgrade all packages
 21     yum:
 22       name: '*'
 23       state: latest
=========================================================================================

#3.playbook安装
[greg@control ansible]$ ansible-playbook packages.yml 

#4.验证
[greg@control ansible]$ ansible dev,test,prod -a "rpm -q php mariadb"
[greg@control ansible]$ ansible dev -a "yum grouplist"
[greg@control ansible]$ ansible dev -a "yum update"

4.A 使用 RHEL 系统角色(NEW)

    使用 RHEL 系统角色

    安装 RHEL 系统角色软件包,并创建符合以下条件的 playbook /home/greg/ansible/selinux.yml :

        在所有受管节点上运行

        使用 selinux 角色

        配置该角色,配置被管理节点的 selinux 为enforcing
#1.搜索软件包
[greg@control ansible]$ yum search roles
rhel-system-roles.noarch 
#2.安装角色软件包
[greg@control ansible]$ sudo yum install -y rhel-system-roles.noarch 

#3.查看角色路径,角色路径放到配置文件
[greg@control ansible]$ rpm -ql rhel-system-roles.noarch
/usr/share/ansible/roles

[greg@control ansible]$ vim ansible.cfg
 70 roles_path    = /home/greg/ansible/roles:/usr/share/ansible/roles 
 
[greg@control ansible]$ ansible-galaxy list
# /home/greg/ansible/roles
- apache, (unknown version)
# /usr/share/ansible/roles

#4.查找配置文件样例,复制样例到playbook,修改playbook
[greg@control ansible]$ rpm -ql rhel-system-roles.noarch | grep example
/usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml

[greg@control ansible]$ cp /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml /home/greg/ansible/selinux.yml

[greg@control ansible]$ vim /home/greg/ansible/selinux.yml

#5.运行playbook
[greg@control ansible]$ ansible-playbook selinux.yml 

#6.验证
[greg@control ansible]$ ansible all -a "grep ^SELINUX /etc/selinux/config"
node4 | CHANGED | rc=0 >>
SELINUX=enforcing
SELINUXTYPE=targeted

4.B 使用 RHEL 系统角色(OLD)

    使用 RHEL 系统角色

    安装 RHEL 系统角色软件包,并创建符合以下条件的 playbook /home/greg/ansible/timesync.yml :

        在所有受管节点上运行

        使用 timesync 角色

        配置该角色,以使用当前有效的 NTP 提供商

        配置该角色,以使用时间服务器 172.25.254.254

        配置该角色,以启用 iburst 参数
#1.搜索软件包
[greg@control ansible]$ yum search roles

#2.查找配置文件样例,复制样例到playbook,修改playbook
[greg@control ansible]$ rpm -ql rhel-system-roles.noarch | grep example
/usr/share/doc/rhel-system-roles/timesync/example-timesync-playbook.yml

[greg@control ansible]$ cp /usr/share/doc/rhel-system-roles/timesync/example-timesync-playbook.yml /home/greg/ansible/timesync.yml

[greg@control ansible]$ vim /home/greg/ansible/timesync.yml

#3.运行playbook
[greg@control ansible]$ ansible-playbook timesync.yml

#4.验证
[greg@control ansible]$ ansible all -m shell -a "timedatectl"
[greg@control ansible]$ ansible all -m shell -a 'chronyc sources -v | grep classroom'
 1 ---
  2 - hosts: all
  3   vars:
  4     timesync_ntp_servers:
  5       - hostname: 172.25.254.254
  6         iburst: yes
  7   roles:
  8     - rhel-system-roles.timesync

5.使用 Ansible Galaxy 安装角色

    使用 Ansible Galaxy 安装角色

    使用 Ansible Galaxy 和要求文件 /home/greg/ansible/roles/requirements.yml 。从以下 URL 下载角色并安装到 /home/greg/ansible/roles :

        http://materials/haproxy.tar 此角色的名称应当为 balancer

        http://materials/phpinfo.tar 此角色的名称应当为 phpinfo
#1.编写playbook文件
[greg@control ansible]$ vim /home/greg/ansible/roles/requirements.yml

#2.安装角色
[greg@control ansible]$ ansible-galaxy role install -r  /home/greg/ansible/roles/requirements.yml

#3.验证
[greg@control ansible]$ ansible-galaxy list
# /home/greg/ansible/roles
- apache, (unknown version)
- balancer, (unknown version)
- phpinfo, (unknown version)
# /usr/share/ansible/roles
 1 ---
  2 - src: http://materials/haproxy.tar
  3   name: balancer
  4 - src: http://materials/phpinfo.tar
  5   name: phpinfo

6.创建和使用角色

    创建和使用角色

    根据下列要求,在 /home/greg/ansible/roles 中创建名为 apache 的角色:

        httpd 软件包已安装,设为在系统启动时启用并启动

        防火墙已启用并正在运行,并使用允许访问 Web 服务器的规则

        模板文件 index.html.j2 已存在,用于创建具有以下输出的文件 /var/www/html/index.html :

        1	Welcome to HOSTNAME on IPADDRESS

        其中,HOSTNAME 是受管节点的完全限定域名,IPADDRESS 则是受管节点的 IP 地址。

    创建一个名为 /home/greg/ansible/apache.yml 的 playbook:

        该 play 在 webservers 主机组中的主机上运行并将使用 apache 角色
[greg@control ansible]$ ansible-doc service
/EX
- name: Start service httpd, if not started
  service:
    name: httpd
    state: started

[greg@control ansible]$ ansible-doc firewalld
/EX		/imm #立即生效
- firewalld:
    service: https
    permanent: yes
    state: enabled

[greg@control ansible]$ ansible-doc template
/EX
- name: Template a file to /etc/files.conf
  template:
    src: /mytemplates/foo.j2
    dest: /etc/file.conf
    owner: bin
    group: wheel
    mode: '0644'
    
[greg@control ansible]$ ansible dev -m setup -a "filter=*name*"
[greg@control ansible]$ ansible dev -m setup -a "filter=*ipv4*"
#1.进入角色路径,创建名为 apache 的角色
[greg@control ansible]$ cd roles/
[greg@control roles]$ ansible-galaxy init apache
- Role apache was created successfully

[greg@control roles]$ tree apache/
apache/
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml
    
#2.编写任务tasks文件
[greg@control roles]$ vim apache/tasks/main.yml

#3.编写模板文件
[greg@control roles]$ vim apache/templates/index.html.j2
Welcome to {{ ansible_nodename }} on {{ ansible_default_ipv4.address }}

#4.编写playbook文件
[greg@control roles]$ vim /home/greg/ansible/apache.yml
  1 ---
  2 - name: 创建和使用角色
  3   hosts: webservers
  4   roles:
  5   - apache
  
#5.回到ansible路径,执行playbook文件
[greg@control roles]$ cd ..
[greg@control ansible]$ ansible-playbook apache.yml

#6.验证
[greg@control ansible]$ ansible-inventory --graph

[greg@control ansible]$ curl node3
Welcome to node3.lab.example.com on 172.25.250.11
[greg@control ansible]$ curl node4
Welcome to node4.lab.example.com on 172.25.250.12

  1 ---
  2 # tasks file for apache
  3 - name: Start service httpd, if not started
  4   service:
  5     name: httpd
  6     state: started
  7     enabled: yes
  8 - name: Start service httpd, if not started
  9   service:
 10     name: firewalld
 11     state: started
 12     enabled: yes
 13 - firewalld:
 14     service: http
 15     permanent: yes
 16     state: enabled
 17     immediate: yes
 18 - name: Template a file to /etc/files.conf
 19   template:
 20     src: index.html.j2
 21     dest: /var/www/html/index.html

7.从 Ansible Galaxy 使用角色

    从 Ansible Galaxy 使用角色

    根据下列要求,创建一个名为 /home/greg/ansible/roles.yml 的 playbook :

        playbook 中包含一个 play, 该 play 在 balancers 主机组中的主机上运行并将使用 balancer 角色。

            此角色配置一项服务,以在 webservers 主机组中的主机之间平衡 Web 服务器请求的负载。

            浏览到 balancers 主机组中的主机(例如 http://172.25.250.13 )将生成以下输出:

            1	Welcome to node3.lab.example.com on 172.25.250.11

            重新加载浏览器将从另一 Web 服务器生成输出:

            1	Welcome to node4.lab.example.com on 172.25.250.12

        playbook 中包含一个 play, 该 play 在 webservers 主机组中的主机上运行并将使用 phpinfo 角色。

            请通过 URL /hello.php 浏览到 webservers 主机组中的主机将生成以下输出:

            1	Hello PHP World from FQDN

            其中,FQDN 是主机的完全限定名称。

            1	Hello PHP World from node3.lab.example.com

    另外还有 PHP 配置的各种详细信息,如安装的 PHP 版本等。

        同样,浏览到 http://172.25.250.12/hello.php 会生成以下输出:

        1	Hello PHP World from node4.lab.example.com

     另外还有 PHP 配置的各种详细信息,如安装的 PHP 版本等。
#1.编写playbook
[greg@control ansible]$ vim /home/greg/ansible/roles.yml

#2.执行playbook
[greg@control ansible]$ ansible-playbook /home/greg/ansible/roles.yml

#3.验证
浏览器访问http://172.25.250.13
Welcome to node4.lab.example.com on 172.25.250.11
Welcome to node4.lab.example.com on 172.25.250.12

浏览器访问http://172.25.250.13/hello.php
Hello PHP World from node4.lab.example.com 
  1 ---
  2 - name: 从 Ansible Galaxy 使用角色
  3   hosts: webservers
  4   roles:
  5   - phpinfo
  6 - name: 从 Ansible Galaxy 使用角色
  7   hosts: balancers
  8   roles:
  9   - balancer

8.A 创建和使用分区(NEW)

    创建和使用分区

    创建一个名为 /home/greg/ansible/partition.yml 的 playbook ,它将在所有受管节点上创建分区:

        在vdb创建一个1500M主分区,分区号1,并格式化ext4

            prod组将分区永久挂载到/data

        如果磁盘空间不够,

            给出提示信息Could not create partition of that size

            创建800MiB分区

        如果 vdb不存在,则给出提示信息this disk is not exist
[greg@control ansible]$ ansible-doc parted
/EX
- name: Create a new primary partition with a size of 1GiB
  parted:
    device: /dev/sdb
    number: 1
    state: present
    part_end: 1GiB

[greg@control ansible]$ ansible-doc filesystem
/EX
- name: Create a ext2 filesystem on /dev/sdb1
  filesystem:
    fstype: ext2
    dev: /dev/sdb1

[greg@control ansible]$ ansible-doc mount
/EX
- name: Mount DVD read-only
  mount:
    path: /mnt/dvd
    src: /dev/sr0
    fstype: iso9660
    opts: ro,noauto
    state: present

[greg@control ansible]$ ansible-doc debug
/EX
- debug:
    msg: System {{ inventory_hostname }} has gateway {{ ansible_default_ipv4.gatewa>
  when: ansible_default_ipv4.gateway is defined
  
[greg@control ansible]$ ansible dev -m setup -a "filter=*device*"

#1.创建playbook
[greg@control ansible]$ vim /home/greg/ansible/partition.yml


#2.执行playbook
[greg@control ansible]$ ansible-playbook partition.yml 

#3.验证
[greg@control ansible]$ ansible all -a "blkid | grep /dev/vdb1"
  1 ---
  2 - name: 创建和使用分区
  3   hosts: all
  4   tasks:
  5   - block:
  6     - name: Create a new primary partition
  7       parted:
  8         device: /dev/vdb
  9         number: 1
 10         state: present
 11         part_end: 1500MiB
 12     - name: Create a ext2 filesystem on /dev/sdb1
 13       filesystem:
 14         fstype: ext4
 15         dev: /dev/vdb1
 16     - name: Mount DVD read-only
 17       mount:
 18         path: /data
 19         src: /dev/vdb1
 20         fstype: ext4
 21         state: mounted
 22       when: inventory_hostname in groups.prod
 23     rescue:
 24     - debug:
 25         msg: Could not create partition of that size
 26     - name: Create a new primary partition
 27       parted:
 28         device: /dev/vdb
 29         number: 1
 30         state: present
 31         part_end: 800MiB
 32       when: ansible_devices.vdb is defined
 33   - debug:
 34       msg: this disk is not exist
 35     when: ansible_devices.vdb is not defined

8.B 创建和使用逻辑卷(OLD)

    创建和使用逻辑卷

    创建一个名为 /home/greg/ansible/lv.yml 的 playbook ,它将在所有受管节点上运行以执行下列任务:

        创建符合以下要求的逻辑卷:

            逻辑卷创建在 research 卷组中

            逻辑卷名称为 data

            逻辑卷大小为 1500 MiB

        使用 ext4 文件系统格式化逻辑卷

        如果无法创建请求的逻辑卷大小,应显示错误信息

        1	Could not create logical volume of that size

         ,并且应改为使用大小 800 MiB。

        如果卷组 research 不存在,应显示错误信息

        1	Volume group done not exist。

        不要以任何方式挂载逻辑卷
[greg@control ansible]$ ansible-doc lvol
/EX
- name: Create a logical volume of 512m
  lvol:
    vg: firefly
    lv: test
    size: 512

[greg@control ansible]$ ansible-doc filesystem
/EX
- name: Create a ext2 filesystem on /dev/sdb1
  filesystem:
    fstype: ext2
    dev: /dev/sdb1

[greg@control ansible]$ ansible-doc debug
/EX
- debug:
    msg: System {{ inventory_hostname }} has gatew>
  when: ansible_default_ipv4.gateway is defined

[greg@control ansible]$ ansible dev -m setup -a "filter=*lvm*"
#1.创建playbook文件
[greg@control ansible]$ vim /home/greg/ansible/lv.yml

#2.执行playbook文件
[greg@control ansible]$ ansible-playbook lv.yml 

#3.验证
[greg@control ansible]$ ansible all -a "lvs"
1 ---
  2 - name: 创建和使用逻辑卷
  3   hosts: all
  4   tasks:
  5   - block:
  6     - name: Create a logical volume of 512m
  7       lvol:
  8         vg: research
  9         lv: data
 10         size: 1500
 11     - name: Create a ext2 filesystem on /dev/sdb1
 12       filesystem:
 13         fstype: ext4
 14         dev: /dev/research/data
 15     rescue:
 16     - debug:
 17         msg: Could not create logical volume of that size
 18     - name: Create a logical volume of 512m
 19       lvol: 
 20         vg: research
 21         lv: data
 22         size: 800
 23       when: ansible_lvm.vgs.research is defined
 24   - debug: 
 25       msg: Volume group done not exist 
 26     when: ansible_lvm.vgs.research is not defined

9.生成主机文件

生成主机文件

    将一个初始模板文件从 http://materials/hosts.j2 下载到 /home/greg/ansible

    完成该模板,以便用它生成以下文件:针对每个清单主机包含一行内容,其格式与 /etc/hosts 相同

    创建名为 /home/greg/ansible/hosts.yml 的 playbook ,它将使用此模板在 dev 主机组中的主机上生成文件 /etc/myhosts 。

该 playbook 运行后, dev 主机组中主机上的文件 /etc/myhosts 应针对每个受管主机包含一行内容:

1	127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

2	::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

3

4	172.25.250.9    node1.lab.example.com node1

5	172.25.250.10   node2.lab.example.com node2

6	172.25.250.11   node3.lab.example.com node3

7	172.25.250.12   node4.lab.example.com node4

8	172.25.250.13   node5.lab.example.com node5
[greg@control ansible]$ ansible-doc template
/EX
- name: Template a file to /etc/files.conf
  template:
    src: /mytemplates/foo.j2
    dest: /etc/file.conf
    owner: bin
    group: wheel
    mode: '0644'
[greg@control ansible]$ ansible dev -m setup -a "filter=*address*"
[greg@control ansible]$ ansible dev -m setup -a "filter=*name*"
#1.下载初始模板文件
[greg@control ansible]$ wget http://materials/hosts.j2

#2.创建playbook
[greg@control ansible]$ vim /home/greg/ansible/hosts.yml

#3.编写hosts.j2文件
[greg@control ansible]$ vim hosts.j2 

#4.运行playbook
[greg@control ansible]$ ansible-playbook hosts.yml

#5.验证
[greg@control ansible]$ ansible dev -a "cat /etc/myhosts"
 1 ---
  2 - name: 生成主机文件
  3   hosts: all
  4   tasks:
  5   - name: Template 
  6     template:
  7       src: /home/greg/ansible/hosts.j2
  8       dest: /etc/myhosts
  9     when: inventory_hostname in groups.dev

方法一:

 1 127.0.0.1 localhost localhost.localdomain localhost4 localho    st4.localdomain4
  2 ::1 localhost localhost.localdomain localhost6 localhost6.lo    caldomain6
  3 
  4 {% for host in groups['all'] %}
  5 {{ hostvars[host].ansible_default_ipv4.address }} {{ hostvars[host].ansible_nodename }} {{ hostvars[host].ansible_hostname }}
  6 {% endfor %}

方法二:

{% for host in groups['all'] %} {{ hostvars[host]['ansible_facts']['default_ipv4']['address'] }} {{ hostvars[host]['ansible_facts']['nodename'] }} {{ hostvars[host] ['ansible_facts']['hostname'] }} {% endfor %}

方法三:

#直接复制 /etc/hosts 内容到 hosts.j2 文件 
#运行playbook

10.修改文件内容

    修改文件内容

    按照下方所述,创建一个名为 /home/greg/ansible/issue.yml 的 playbook :

        该 playbook 将在所有清单主机上运行

        该 playbook 会将 /etc/issue 的内容替换为下方所示的一行文本:

            在 dev 主机组中的主机上,这行文本显示 为:Development

            在 test 主机组中的主机上,这行文本显示 为:Test

            在 prod 主机组中的主机上,这行文本显示 为:Production
[greg@control ansible]$ ansible-doc copy
- name: Copy using inline content
  copy:
    content: '# This file was moved to /etc/other.con>
    dest: /etc/mine.conf

#1.创建playbook,并编写
[greg@control ansible]$ vim /home/greg/ansible/issue.yml

#2.运行playbook
[greg@control ansible]$ ansible-playbook issue.yml 

#3.验证
[greg@control ansible]$ ansible all -a "cat  /etc/issue"
[greg@control ansible]$ ansible-inventory --graph
  1 ---
  2 - name: 修改文件内容
  3   hosts: all
  4   tasks:
  5   - name: Copy using inline content
  6     copy:
  7       content: 'Development'
  8       dest: /etc/issue
  9     when: inventory_hostname in groups.dev
 10   - name: Copy using inline content
 11     copy:
 12       content: 'Test'
 13       dest: /etc/issue
 14     when: inventory_hostname in groups.test
 15   - name: Copy using inline content
 16     copy:
 17       content: 'Production'
 18       dest: /etc/issue
 19     when: inventory_hostname in groups.prod

11.创建 Web 内容目录

创建 Web 内容目录

按照下方所述,创建一个名为 /home/greg/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/ )将生成以下输出:

    1 Development
#1.检查webdev 组是否存在
[greg@control ansible]$ ansible dev -a "grep webdev /etc/group"
node1 | CHANGED | rc=0 >>
webdev:x:1003:

#2.创建playbook
[greg@control ansible]$ /home/greg/ansible/webcontent.yml

#3.运行playbook
[greg@control ansible]$ ansible-playbook webcontent.yml

#3.浏览器浏览http://172.25.250.9/webdev/
Development
[greg@control ansible]$ ansible-doc file
/EX
- name: Change file ownership, group and permissions
  file:
    path: /etc/foo.conf
    owner: foo
    group: foo
    mode: '0644'
    
- name: Create a directory if it does not exist
  file:
    path: /etc/some_directory
    state: directory
    mode: '0755'

- name: Create a symbolic link
  file:
    src: /file/to/link/to
    dest: /path/to/symlink
    owner: foo
    group: foo
    state: link

[greg@control ansible]$ ansible-doc copy
/EX

- name: Copy using inline content
  copy:
    content: '# This file was moved to /etc/other.conf'
    dest: /etc/mine.conf
    
- setype
        The type part of the SELinux file context.
        When set to `_default', it will use the `type' portion of>
        policy if available.
        [Default: (null)]
        type: str
        
- name: Start service httpd, if not started
  service:
    name: httpd
    state: started
	enabled: yes
  1 ---
  2 - name: 创建 Web 内容目录
  3   hosts: dev
  4   tasks:
  5   - name: Change file ownership
  6     file:
  7       path: /webdev
  8       state: directory
  9       group: webdev
 10       mode: '2775'
 11   - name: Create a symbolic link
 12     file:
 13       src: /webdev
 14       dest: /var/www/html/webdev
 15       state: link
 16   - name: Copy using inline content
 17     copy:
 18       content: 'Development'
 19       dest: /webdev/index.html
 20       setype: httpd_sys_content_t
 21   - name: Start service httpd, if not started
 22     service:
 23       name: httpd
 24       state: started
 25       enabled: yes

12.生成硬件报告

    生成硬件报告

    创建一个名为 /home/greg/ansible/hwreport.yml 的 playbook ,它将在所有受管节点上生成含有以下信息的输出文件 /root/hwreport.txt :

        清单主机名称

        以 MB 表示的总内存大小

        BIOS 版本

        磁盘设备 vda 的大小

        磁盘设备 vdb 的大小

        输出文件中的每一行含有一个 key=value 对。

    您的 playbook 应当:

        从 http://materials/hwreport.empty 下载文件,并将它保存为 /root/hwreport.txt

        使用正确的值改为 /root/hwreport.txt

        如果硬件项不存在,相关的值应设为 NONE
#1.创建playbook
[greg@control ansible]$ vim /home/greg/ansible/hwreport.yml

#2.运行playbook
[greg@control ansible]$ ansible-playbook hwreport.yml

#3.验证
 [greg@control ansible]$ ansible all -a 'cat /root/hwreport.txt'
[greg@control ansible]$ ansible-doc lineinfile
/EX
- name: Ensure SELinux is set to enforcing mode
  lineinfile:
    path: /etc/selinux/config
    regexp: '^SELINUX='
    line: SELINUX=enforcing

[greg@control ansible]$ ansible-doc get_url
/EX
- name: Download foo.conf
  get_url:
    url: http://example.com/path/file.conf
    dest: /etc/foo.conf
    mode: '0440'
    
[greg@control ansible]$ ansible dev -m debug -a "var=inventory_hostname"
[greg@control ansible]$ ansible dev -m setup -a "filter=*mem*"
[greg@control ansible]$ ansible dev -m setup -a "filter=*bios*"
[greg@control ansible]$ ansible dev -m setup -a "filter=*device*"
  1 ---
  2 - name: 生成硬件报告
  3   hosts: all
  4   tasks:
  5   - name: Download
  6     get_url:
  7       url: http://materials/hwreport.empty
  8       dest: /root/hwreport.txt
  9   - name: Ensure1
 10     lineinfile:
 11       path: /root/hwreport.txt
 12       regexp: '^HOST='
 13       line: HOST={{ inventory_hostname }}
 14   - name: Ensure2
 15     lineinfile:
 16       path: /root/hwreport.txt
 17       regexp: '^MEMORY='
 18       line: MEMORY={{ ansible_memtotal_mb }}
 19 
 20   - name: Ensure3
 21     lineinfile:
 22       path: /root/hwreport.txt
 23       regexp: '^BIOS='
 24       line: BIOS={{ ansible_bios_version }}
 25   - name: Ensure4
 26     lineinfile:
 27       path: /root/hwreport.txt
 28       regexp: '^DISK_SIZE_VDA='
 29       line: DISK_SIZE_VDA={{ ansible_devices.vda.size }}
 30 
 31   - name: Ensure5
 32     lineinfile:
 33       path: /root/hwreport.txt
 34       regexp: '^DISK_SIZE_VDB='
 35       line: DISK_SIZE_VDB={{ ansible_devices.vdb.size | default('NONE', true) }}

13.创建密码库

(15题先,13题后,再14题)

    创建密码库

    按照下方所述,创建一个 Ansible 库来存储用户密码:

        库名称为 /home/greg/ansible/locker.yml

        库中含有两个变量,名称如下:

            pw_developer,值为 Imadev

            pw_manager,值为 Imamgr

        用于加密和解密该库的密码为 whenyouwishuponastar

        密码存储在文件 /home/greg/ansible/secret.txt 中
#1.密码导入密码存储文件
[greg@control ansible]$ echo "whenyouwishuponastar" > /home/greg/ansible/secret.txt

#2.修改配置文件存储路径
[greg@control ansible]$ vim ansible.cfg
/password
144 #vault_password_file = /path/to/vault_password_file
145 vault_password_file = /home/greg/ansible/secret.txt 

#3.创建Ansible 库,存储用户密码
[greg@control ansible]$ ansible-vault create /home/greg/ansible/locker.yml
pw_developer: Imadev
pw_manager: Imamgr

#4.验证
[greg@control ansible]$ ansible-vault view /home/greg/ansible/locker.yml

---
pw_developer: Imadev
pw_manager: Imamgr

[greg@control ansible]$ cat /home/greg/ansible/locker.yml

14.创建用户帐户

(15题先,13题后,再14题)

    创建用户帐户

        从 http://materials/user_list.yml 下载要创建的用户的列表,并将它保存到 /home/greg/ansible

        在本次练习中使用在其他位置创建的密码库 /home/greg/ansible/locker.yml 。创建名为 /home/greg/ansible/users.yml 的 playbook ,从而按以下所述创建用户帐户:

            职位描述为 developer 的用户应当:

                在 dev 和 test 主机组中的受管节点上创建

                从 pw_developer 变量分配密码

                是补充组 devops 的成员

            职位描述为 manager 的用户应当:

                在 prod 主机组中的受管节点上创建

                从 pw_manager 变量分配密码

                是补充组 opsmgr 的成员

        密码采用 SHA512 哈希格式。

        您的 playbook 应能够在本次练习中使用在其他位置创建的库密码文件 /home/greg/ansible/secret.txt 正常运行。
#查看组是否存在
[greg@control ansible]$ ansible dev,test -a "grep devops /etc/group"

#playbook查询文档
[greg@control ansible]$ ansible-doc group
/EX
- name: Ensure group "somegroup" exists
  group:
    name: somegroup
    state: present

[greg@control ansible]$ ansible-doc user
/EX
- name: Add the user 'james' with a bash shell, appen>
  user:
    name: james
    shell: /bin/bash
    groups: admins,developers
    append: yes
#1.下载要创建的用户的列表
[greg@control ansible]$ wget http://materials/user_list.yml

#2.创建playbook,并编写
[greg@control ansible]$ vim /home/greg/ansible/users.yml


#3.运行playbook
[greg@control ansible]$ ansible-playbook users.yml

#4.验证
[greg@control ansible]$ ansible-inventory --graph

[greg@control ansible]$ ansible dev,test -m shell -a "id bob; id sally; id fred" 
[greg@control ansible]$ ssh bob@node1

[greg@control ansible]$ ansible prod -m shell -a "id bob; id sally; id fred"
[greg@control ansible]$ ssh sally@node3
  1 ---
  2 - name: 创建用户帐户
  3   hosts: dev,test
  4   vars_files:
  5   - /home/greg/ansible/locker.yml
  6   - /home/greg/ansible/user_list.yml
  7   tasks:
  8   - name: Ensure group "somegroup" exists
  9     group:
 10       name: devops
 11       state: present
 12   - name: Add the user
 13     user:
 14       name: "{{ item.name }}"
 15       groups: devops
 16       password: "{{ pw_developer | password_hash('sha512') }}"
 17       append: yes
 18     loop: "{{ users }}"
 19     when: item.job == 'developer'
 20 
 21 - name: 创建用户帐户
 22   hosts: prod
 23   vars_files:
 24   - /home/greg/ansible/locker.yml
 25   - /home/greg/ansible/user_list.yml
 26   tasks:
 27   - name: Ensure group "somegroup" exists
 28     group:
 29       name: opsmgr
 30       state: present
 31   - name: Add the user
 32     user:
 33       name: "{{ item.name }}"
 34       groups: opsmgr
 35       password: "{{ pw_manager | password_hash('sha512') }}"
 36       append: yes
 37     loop: "{{ users }}"
 38     when: item.job == 'manager'

15.更新 Ansible 库的密钥

(15题先,13题后,再14题)

    更新 Ansible 库的密钥

    按照下方所述,更新现有 Ansible 库的密钥:

        从 http://materials/salaries.yml 下载 Ansible 库到 /home/greg/ansible

        当前的库密码为 insecure8sure

        新的库密码为 bbs2you9527

        库使用新密码保持加密状态
#1.下载Ansible 库
[greg@control ansible]$ wget http://materials/salaries.yml

#2.重设密码
[greg@control ansible]$ ansible-vault rekey  /home/greg/ansible/salaries.yml 

#3.验证
[greg@control ansible]$ ansible-vault view  /home/greg/ansible/salaries.yml 
Vault password: 
haha

16.配置 cron 作业(增加)

    配置 cron 作业

    创建一个名为 /home/greg/ansible/cron.yml 的 playbook :

        该 playbook 在 test 主机组中的受管节点上运行

        配置 cron 作业,该作业每隔 2 分钟运行并执行以下命令:

        logger "EX200 in progress",以用户 bob 身份运行
[greg@control ansible]$ ansible-doc cron
/EX
- name: Creates a cron file under /etc/cron.d
  cron:
    name: yum autoupdate
    weekday: "2"
    minute: "0"
    hour: "12"
    user: root
    job: "YUMINTERACTIVE=0 /usr/sbin/yum-autoupdate"
    cron_file: ansible_yum-autoupdate

#1.创建playbook
[greg@control ansible]$ vim /home/greg/ansible/cron.yml

#2.运行playbook
[greg@control ansible]$ ansible-playbook cron.yml 

#3.验证
[greg@control ansible]$ ansible test -a "grep EX200 /var/log/cron"

node2 | CHANGED | rc=0 >>
Jul  8 15:34:02 node2 CROND[6182]: (bob) CMD (logger "EX200 in progress")

[greg@control ansible]$ ansible test -a "crontab -l -u bob"
  1 ---
  2 - name: cron
  3   hosts: test
  4   tasks:
  5   - name: Creates a cron
  6     cron:
  7       name: yum autoupdate
  8       minute: "*/2"
  9       user: bob
 10       job: logger "EX200 in progress"

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


RedHat红帽认证---RHCE文章来源地址https://www.toymoban.com/news/detail-498050.html

到了这里,关于RedHat红帽认证---RHCE的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 红帽认证 | 红帽认证分几级?红帽认证的证书含金量高吗?

    红帽认证是IT领域中备受关注的一种认证,它由 红帽公司 推出,旨在证明持证者在 Linux操作系统 方面的技能和知识。 那么,红帽认证分几级?红帽认证的证书含金量高吗?下面将详细介绍 红帽认证的级别和证书含金量 。 ★ 红帽认证系统管理员(RHCSA): 是红帽的 初级 认证

    2024年01月18日
    浏览(41)
  • 红帽认证有啥用?初级红帽认证证书值得考吗?

    大家好,这里是G-LAB IT实验室。 今天我们来了解一下Linux红帽认证。 红帽认证已成为企业和个人竞相追逐的热门资质。 红帽认证认可度究竟如何?红帽RHCSA认证含金量又有多高? 下面G-LAB将为你一一解答。 事实上,红帽认证认可度在全球范围内都得到了广泛的认可和重视。许多

    2024年01月25日
    浏览(38)
  • 红帽认证—RHCSA

    目录 考试须知 在mars.domain250.example.com上执行以下任务 一、配置mars网络 二、配置系统使用默认存储库 三、调试SELINUX 四、创建用户账户 五、配置cron任务 六、创建共享目录 七、配置NTP 八、配置autofs 九、配置 /var/tmp/fstab 权限 十、配置用户账户 十一、查找文件 十二、查找字

    2024年02月04日
    浏览(33)
  • RHCE(剧本和变量)

     一系列ansible命令的集合,使用yaml语言进行编写的,从上往下的执行,支持很多的特性,比如,将某个命令的状态作为变量给其他的任务执行,变量,循环,判断,错误纠正,可以是一个playbook或者是多个playbook执行 1、yaml约束 编写 yaml 的时候, 不能使用 tab 键 ,只能使用空

    2024年04月08日
    浏览(28)
  • RHCE第二次作业

    问题:如何让两台虚拟机相互免密登录 (1)server2虚拟机配置 先查看其ip地址,IP地址为192.168.119.131  让server2免密登录到REDHAD_ROOT 结果 (2)REDHAD_ROOT配置 先查看其ip地址,IP地址为192.168.119.130 让REDHAD_ROOT免密登录到server2  结果

    2024年02月08日
    浏览(46)
  • 一、RHCE--准备工作

    第一种:通过命令行的方式 1.激活网卡(重新加载配置): 第二种:通过vim编辑器修改配置文件的方式 第三种:通过图形化的方式: 1.查看网卡信息: 2.查看网卡: 1.配置yum源 2.建立软件仓库:repository - repo 3.配置的目录: /etc/yum.repos.d/ 4.本地yum源:iso镜像不能直接使用,需要

    2024年01月22日
    浏览(43)
  • RHCE 作业二

    1. 第一步:配置服务端server         1安装chrony         [root@server ~]# yum install chrony -y         2编辑配置文件,修改为阿里的时间服务地址         [root@server ~]# vim /etc/chrony.conf                  3 重启服务         [root@server ~]# systemctl restart chronyd        

    2024年02月08日
    浏览(33)
  • RHCE——九、SELinux

    欢迎来到我的博客,这里是Linux板块,配合之前RHCSA进阶,希望我的博客可以帮助到您,感谢您的阅读,有什么问题还希望一起探讨交流,感谢各位的支持,感谢! 0、RHCSA——使用Linux搭建一个简单的论坛(这里即可跳转Linux基础内容) https://blog.csdn.net/weixin_63172698/article/deta

    2024年02月10日
    浏览(34)
  • RHCE(ansible语句)

     说到底,还是有多个表达式来组成一个判断语句,很多种的判断语句 1、 为什么需要判断语句: 有的时候play的结果需要依赖于变量,fact或者是前一个任务的执行结果,或者基于上一个task执行返回的结果而决定如何执行后续的task,这个时候就需要条件的判断了,一个很简单

    2024年04月08日
    浏览(30)
  • 红帽回应对开源的承诺

    导读 红帽上周宣布了限制源代码访问性的政策,称其企业发行版 RHEL (Red Hat Enterprise Linux) 相关源码仅通过 CentOS Stream 公开,付费客户和合作伙伴可通过 Red Hat Customer Portal 访问到源代码。 红帽上周宣布了限制源代码访问性的政策,称其企业发行版 RHEL (Red Hat Enterprise Linux) 相

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包