运维——Ansible中的变量及加密

目录

##1.变量命名##

##2.变量级别##

##3.变量设定和使用方式##

#1)在playbook中直接定义变量#

#2)在文件中定义变量#

#3)使用变量#

 #4)设定主机变量和清单变量#

#在定义主机变量和清单变量时使用 

#5)目录设定变量#

#6)用命令覆盖变量#

#7)使用数组设定变量#

#8)注册变量#

#9)事实变量#

#10)魔法便变量#

##JINJA2模板##

##j2模板书写规则#

 #for循环# 

#if 判定# 

#j2模板在playbook中的应用#

## Ansible的加密控制 ##

#创建建立文件

#加密现有文件

#查看加密文件

#编辑加密文件

##解密文件

##更改密码

大练习


##1.变量命名##

只能包含数字,下划线,字母 ;只能用下划线或字母开头。

##2.变量级别##

全局: 从命令行或配置文件中设定的

paly: 在play和相关结构中设定的

主机: 由清单,事实收集或注册的任务

变量优先级设定: 狭窄范围有限与广域范围

##3.变量设定和使用方式##

#1)在playbook中直接定义变量#

---

- name: test var

  hosts: all

  vars:

USER: westosuser

#2)在文件中定义变量#

vim user_list.yml

---

user: westosuser

vim westos.yml

---

- name: Create User

  hosts: all

  vars_files:

      - ./user_list.yml

#3)使用变量#

 tasks:    - name: create user      user:        name: "{{ USER }}"

 #4)设定主机变量和清单变量#

#在定义主机变量和清单变量时使用 

vim inventory [westos_list1] 172.25.0.254 172.25.0.1
 [westos_list2] 172.25.0.2
 [westos_list3] 172.25.0.3
 [westos_group:children] westos_list2 westos_list3
 [westos_list1:vars] USER=westos1
 [westos_group:vars] USER=westos2

#5)目录设定变量#

group_vars ##清单变量,目录中的文件名称与主机清单名称一致

host_vars ##主机变量,目录中的文件名称与主机名称一致 

#6)用命令覆盖变量#

ansible-playbook user.yml -e "USER=hello"

#7)使用数组设定变量#

#vim user_var.yml 

-USER:  

lee:    

age: 18  

 obj: linux    

westos:    

age: 20    

obj: java
#vim user.yml

- name: Create User  

hosts: all  

gather_facts: no  

vars_files:

   ./user_var.yml
 tasks:    - name: create user      

shell:  

     echo  "{{USER['lee']['age']}}"  

     echo  "{{USER.westos.obj}}"

#8)注册变量#

#register 把模块输出注册到指定字符串中

#9)事实变量#

事实变量是ansible在受控主机中自动检测出的变量 事实变量中还有与主机相关的信息
当需要使用主机相关信息时不需要采集赋值,直接调用即可 因为变量信息为系统信息所以不能随意设定仅为采集信息,故被成为事实变量

 gather_facts: no ##在playbook中关闭事实变量收集

#10)魔法便变量#

hostvars:         ##ansible软件的内部信息

#eg:

ansible localhost -m debug -m "var=hostvars"
 group_names:         ##当前受管主机所在组
 groups:         ##列出清单中所有的组和主机 
 inventory_hostname:         ##包含清单中配置的当前授管主机的名称

##JINJA2模板##

#介绍 :Jinja2是Python下一个被广泛应用的模版引擎 他的设计思想来源于Django的模板引擎, 并扩展了其语法和一系列强大的功能。 其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能。

##j2模板书写规则#

 #for循环# 

 vim test.j2

{% for NAME in users %}

{{ NAME }}

{%endfor%}

#if 判定# 

 

{% for user in students %}

name: {{user['name']}}

{%if user['age'] is defined%}

age: {{user['age']}}

{%endif%}

{% if user['age'] is not defined %}

age: null

{% endif%}

obj: {{user['obj']}}
{%endfor%}

 

#j2模板在playbook中的应用# 

## Ansible的加密控制 ##

#创建建立文件

1. ansible-vault create westos
2. vim westos-vault   

lee

ansible-vault create --vault-password-file=westos-valut westos

#加密现有文件

ansible-vault encrypt test

#查看加密文件

ansible-vault view westos

ansible-vault view --vault-password-file=westos-valut westos

#编辑加密文件

ansible-vault edit westos1

ansible-vault edit --vault-password-file=westos-valut westos

##解密文件

ansible-vault decrypt westos         ##文件永久解密

ansible-vault decrypt westos --output=linux         ##文件解密保存为linux

##更改密码

ansible-vault rekey westos1

ansible-vault rekey westos1 --new-vault-password-file=key1
 
#playbook# ansible-playbook apache_install.yml  --ask-vault-pass

大练习

问题:

解答:

vim vhosts.conf.j2
{%for WEB in WEBS%}
{%if WEB.name is not defined%}
<VirtualHost _default_:80>
{%endif%}
{%if WEB.name is defined%}
<VirtualHost *:80>
  ServerName {{WEB.name}}
{%endif%}
  DocumentRoot {{WEB.doc}}
</VirtualHost>
{%endfor%}

vim vhosts_vars.yml
WEBS:
  - doc: /var/www/html
    index: www.westos.org
  - name: linux.westos.org
    doc: /var/www/virtual/linux
    index: linux.westos.org
  - name: news.westos.org
    doc: /var/www/virtual/news
    index: news.westos.org
vim apache.yml 
- name: Apache server
  hosts: 172.25.254.200
  vars_files:
    ./vhosts_vars.yml
  tasks:
    - name: install apache
      dnf:
        name: httpd
        state: present
    - name: start apache
      service:
        name: httpd
        state: started
        enabled: yes
    - name: firewalld setup
      firewalld:
        service: http
        permanent: yes
        state: enabled
        immediate: yes
        zone: public
    - name: create Document
      file:
        path: "{{item.doc}}"
        state: directory
      loop:
        "{{WEBS}}"
    - name: create index
      copy:
        dest: "{{item.doc}}/index.html"
        content: "{{item.index}}"
      loop:
        "{{WEBS}}"
    - name: configure vhost
        template:
        src: ./vhosts.conf.j2
        dest: /etc/httpd/conf.d/vhost.conf

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值