上午RHCSA就不说了比较简单,只注意2点:
1、细心细心
2、主机1的第一题和第二题千万不能错,错了就百分百过不了上午的,主机2的vdo磁盘一定不能出错,出错或没有开机运行vdo机子就重启不来,题目全做完一定要全先重启电脑,起来后再全部检测一遍每道题,时间很充足,不要急。
下午RHCE题总结:
第1-2题比较重要一定不能出错,考试上面的重要信息要仔细看,先不要着记做题,至少看2遍,下午题的精髓就是把ansible里的变量、判断、循环和一些架构搞清楚,必须要理解,只要理解了,不管怎么出都能做的出来。
这是我针对考试用到的变理、判断、循环等总结
判断磁盘大小没有就给默认值
alue: “{
{ ansible_facts.devices.vdb.size | default(‘NONE’) }}”
判断vgs在不在用:
when: “‘research’ in ansible_lvm.vgs” //或 not in 不存在
when: ansible_lvm.vgs.research is undefined //这样也可以
判断磁盘在不在用:
when: ansible_facts.devices.vdd is defined //或undefined
选择变量里面的key=value进行判断:
when: item.name == ‘jack’
判断单个主机是否在这个主机组里
when: inventory_hostname in groups[‘prod’] //或 not in
得到当前主机的名称node1(放在剧本中用自动会循环获取gether_facts得到的所有主机)
ansible dev -m debug -a “msg={
{ inventory_hostname }}”
ansible dev -m debug -a “msg={
{ hostvars.node1.ansible_password }}”
拿到dev主机组中的所有主机的密码
ansible dev -m debug -a “msg={
{ hostvars.node1 }}”
拿到dev主机组中的所有主机的详细信息
ansible dev -m debug -a “msg={
{ groups }}”
拿到清单中所有主机组和各组中的主机
welcome to {
{ansible_hostname }} on {
{ansible_default_ipv4.address }}
jinjia2.j2文件中放入这些变量,复制过去受控机自动替换变量
groups[‘all’] //得到清所有的主机列表
inventory_hostname in groups[‘var’] //循环var主机组中的所有主机
找fqdn和ip
Welcome to {
{ ansible_fqdn }} on {
{ ansible_default_ipv4.address }}
判断磁盘大小如果不在给默认值:
value: “{
{ ansible_facts.devices.vdb.size | default(‘NONE’) }}”
判读文件在不在
ansible dev -m stat -a "path=/etc/ddddd"输出下面查看可以组合成stat.exists
node1 | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“stat”: {
“exists”: false
}
}
用stat模块输出再注册一下再调用判断
tasks:
- name: file-not-yes
stat:
path: /etc/dx
register: file_status
…
…
when: file_status.stat.exists==False 在就是True
判断系统信息
先查寻一下:ansible dev -m setup |grep ansible_distribution
再写剧本 (可以加and和or)
- name:
debug:
msg: centos
when: ansible_distribution==“CentOS”
“ansible_distribution”: “CentOS”,
“ansible_distribution_file_parsed”: true,
“ansible_distribution_file_path”: “/etc/redhat-release”,
“ansible_distribution_file_variety”: “RedHat”,
“ansible_distribution_major_version”: “7”,
“ansible_distribution_release”: “Core”,
“ansible_distribution_version”: “7.9”,
-------------------开始每一题----------------------------------------
yum install ansible 直接安装,虚拟机考试里面已有ansible yum 源,考试时我看了
---------------------------------------------------------------------------
[kiosk@foundation0 ~]$ ssh greg@control /现场考试每个人的账号和密码不同一定要看清楚
greg@control's password: flectrag
[greg@control ~]$ sudo yum -y install ansible
[greg@control ~]$ mkdir -p /home/greg/ansible/roles
配置ansible需要管理的主机
[greg@control ~]$ cd ansible
[greg@control ansible]$ vim /home/greg/ansible/inventory
cp /etc/ansible/ansible.cfg /home/greg/ansible //主配置文件考过来当模板修改,他放在哪,当前执行就要在哪个路径下
[dev]
node1
[test]
node2
[prod]
node3
node4
[balancers]
node5
[webservers:children]
prod
[all:vars]
ansible_password=flectrag //保险期间加上,考试看情况受控机密码是不是一样的
[greg@control ansible]$ vim ansible.cfg
[defaults] /必须要放在第一行这个
inventory = /home/greg/ansible/inventory
roles_path = /home/greg/ansible/roles
取消ssh验证,也就是第一次ssh机器时不需要按yes更新密钥
host_key_checking = False
remote_user = greg
[privilege_escalation]
become=True
become_method=sudo //sudo方式操作
become_user=root //以root权限使用
become_ask_pass=False
测试:
[greg@control ansible]$ ansible all --list-hosts
-----------------------------------------------------------------------------------------------
[greg@control ansible]$ ansible all -m ping -o #ping下受控主机是否在线
[greg@control ansible]$ vim adhoc.sh
#!/bin/bash
ansible all -m yum_repository -a 'name=EX294_BASE description="EX294 base software" baseurl=http://content/rhel8.0/x86_64/dvd/BaseOS gpgcheck=yes gpgkey=http://content/rhel8.0/x86_64/dvd/RPM-GPG-KEY-redhat-release '
ansible all -m yum_repository -a 'name=EX294_STREAM description="EX294 stream software" baseurl=http://content/rhel8.0/x86_64/dvd/AppStream gpgcheck=yes gpgkey=http://content/rhel8.0/x86_64/dvd/RPM-GPG-KEY-redhat-release enabled=yes'
:wq
[greg@control ansible]$ chmod 755 adhoc.sh #给与执行权限
[greg@control ansible]$ ./adhoc.sh
ansible all -m shell -a "yum repolist" //查看yum仓库,会有waring不用管他
---------------------------------------------------------------------------------------------------
[greg@control ansible]$ vim packages.yml //这题没啥难度,
---
- name: install php and mariadb
hosts: dev,test,prod
vars:
packs:
- php
- mariadb
tasks:
- name: install php and mariadb
yum:
name: "{
{ item }}"
state: present
loop: "{
{ packs }}"
- name: install groups
hosts: dev
tasks:
- name: install dev tools
yum:
name: "@RPM Development Tools"
state: present
- name: update all
yum:
name: '*'
state: latest
:wq
[greg@control ansible]$ ansible-playbook packages.yml
验证直接看执行过程,一目了然
----------------------------------