文章目录
- 一、变量
- 二、机密
- 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.查看清单中的所有组和主机。
 



















