文章目录
- 一、变量
- 二、机密
- 2.1 创建加密文件
- 2.2 查看加密文件
- 2.3 编辑加密文件内容
- 2.4 加密现有文件
- 2.5 解密文件
- 2.6 更改加密密码
- 三、事实
- 3.1 收集展示事实
- 3.2 展示某个结果
- 3.3 新旧事实命令
- 3.4 关闭事实
- 3.5 魔法变量
一、变量
常设置的变量:
- 要创建的用户
- 要安装的软件包
- 要重新启动的服务
- 要删除的文件
- 要从互联网检索的存档
命名变量:
- 变量的名称必须以字母开头,并且只能包含字母、数字和下划线。
变量优先级:
- 全局范围:从命令行或Ansible配置设置的变量。
- playbook范围:在play和相关结构中设置的变量。
- 主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量。
- 命令行 > playbook变量 > 清单文件变量
1.playbook中定义变量。
[root@localhost playbook]# cat baimu.yml
---
- name: 服务安装
hosts: all
vars: ##添加变量。
service_name: httpd
tasks:
- name: 安装httpd
yum:
name: "{{ service_name }}" ##引用变量名。
state: present
2.使用变量文件定义。
二、机密
命令 | 释义 |
---|---|
create | 创建一个vault加密文件 |
decrypt | 解密保险库加密文件 |
edit | 编辑保险库加密文件 |
view | 查看保险库加密文件 |
encrypt | 加密YAML文件 |
encrypt_string | 加密字符串 |
rekey | 重新加密保险库加密文件 |
2.1 创建加密文件
1.输出密码创建加密文件qingjun,内容为“我在学习”。
2.指定密码文件创建加密文件baimu,内容为"热爱祖国"。
2.2 查看加密文件
1.查看加密文件qingjun内容。
2.查看加密文件baimu内容。
2.3 编辑加密文件内容
1.对现有的加密文件baimu内容进行编辑,添加一行“华夏九州”,输入密码查看验证。
2.4 加密现有文件
1.将普通文件qingjun1加密,变成加密文件,只能使用密码查看。
2.5 解密文件
1.将加密文件变成普通文件。
2.6 更改加密密码
1.更改加密文件baimu的密码,有原来的123456变成citms。
三、事实
基本了解:
- 通过setup模块获取受控机上的变量称为事实,将变量信息输出展示到主控机上,可以方便主控机对受控机的操控使用。
- 事实中包含与受控机相关的信息,可以配合playbook中的变量、条件和循环来使用。
- 每个play在执行第一个任务之前会先自动运行setup模块来收集事实,但不会展示出来,可以在playbook中使用debug模块来收集事实并展示出来。
常用事实:
- 主机名称
- 内核版本
- 网络接口
- IP地址
- 操作系统版本
- 各种环境变量
- CPU数量
- 提供的或可用的内存
- 可用磁盘空间
3.1 收集展示事实
1.使用setup模块获取对受控机收集的事实。
ansible all -m setup -i inventory.ini |less
2.使用debug模块收集展示事实。
[root@localhost playbook]# cat qingjun.yml
---
- name: 系统初始化
hosts: 192.168.130.161
tasks:
- name: 执行setup模块,取变量
debug:
var: ansible_facts
3.2 展示某个结果
1.只展示事实中的某个参数。
2.作为变量被其他模块使用。
[root@localhost playbook]# cat qingjun.yml
---
- name: 获取变量
hosts: 192.168.130.161
tasks:
- name: 获取变量1
shell: |
echo 这台受控机的ip是:{{ ansible_facts['all_ipv4_addresses'] }} ##双括号代表引用变量。
register: qingjun ##register捕获命令输出,写在哪个任务下面打印哪个任务下的信息。
- debug: var=qingjun ##使用debug模块打印一个变量值,这里就打印qingjun变量。
- name: 获取变量2
shell: |
echo 版本号为:{{ ansible_facts['bios_version'] }}
register: qingjun
- debug: var=qingjun
3.3 新旧事实命令
ansible_facts形式 | 旧事实变量形式 |
---|---|
ansible_facts[‘hostname’] | ansible_hostname |
ansible_facts[‘fqdn’] | ansible_fqdn |
ansible_facts[‘default_ipv4’][‘address’] | ansible_default_ipv4[‘address’] |
ansible_facts[‘interfaces’] | ansible_interfaces |
ansible_facts[‘devices’][‘vda’][‘partitions’][‘vda1’][‘size’] | ansible_devices[‘vda’][‘partitions’][‘vda1’][‘size’] |
ansible_facts[‘dns’][‘nameservers’] | ansible_dns[‘nameservers’] |
ansible_facts[‘kernel’] | ansible_kernel |
1.使用旧语法展示事实结果。
[root@localhost playbook]# cat qingjun.yml
---
- name: 获取变量
hosts: 192.168.130.161
tasks:
- name: 获取变量1
shell: |
echo 这台受控机的ip是:{{ ansible_all_ipv4_addresses }} ##使用就语法,去掉facts。
register: qingjun
- debug: var=qingjun
2.关闭就语法使用。修改ansible配置文件参数“ inject_facts_as_vars = True ”,它默认是开启的,将注释取消,改为False即可。
3.4 关闭事实
1.添加参数“gather_facts: no”,可关闭事实收集功能。
2.此时可以添加setup模块,临时收集事实。
[root@localhost playbook]# cat qingjun.yml
---
- name: 获取变量
hosts: 192.168.130.161
tasks:
- name: 获取变量1
shell: |
echo 这台受控机的ip是:{{ ansible_facts['all_ipv4_addresses'] }}
register: qingjun
- debug: var=qingjun
3.5 魔法变量
- 除了从事实中展示出来的变量,也还有一些其他变量由Ansible自动设置,这种变量成为魔法变量。这些魔法变量也可用于获取与特定受管主机相关的信息。
- 官网连接
常用魔法变量 | 释义 |
---|---|
hostvars | 包含受管主机的变量,可以用于获取另一台受管主机的变量的值。 若还没有为受管主机收集事实,则它不会包含该主机的事实。 |
group_names | 列出当前受管主机所属的所有组 |
groups | 列出清单中的所有组和主机 |
inventory_hostname | 包含清单中配置的当前受管主机的主机名称,也有可能与事实报告的主机名称不同 |
1.查看受控机的变量信息,setup模块查不到的这部分信息。
2.查看清单中的所有组和主机。