管理变量(RH294)

变量简单介绍

Ansible支持使用变量来存储值,并在Ansible项目的文件中重复使用

利于项目的创建和维护,减少错误 变量这个东西的嘛 大家都懂 就是x=y

变量可能包含以下

  1. 要创建的用户

  1. 要安装的软件包

  1. 要重新启动的服务

  1. 要删除的文件

  1. 要从互联网检索的存档

变量的命名规范

1.必须以字母开头,可以包括字母数字下划线
2.分为 三个范围
全局范围(在命令行或者ansible配置设置的变量)
Play范围(play和相关结构中设置的变量)
主机范围:(由清单事实收集或注册的任务,在主机组和个别主机上设置的变量)

定义变量的方式

1.放在playbook开头的vars模块当中

简单举个栗子

- hosts: all
  vars:
       user: joe
       home: /home/joe

2.在外部文件中定义playbook变量,此时不使用vars模块 转而使用vars_file

还是简单的举个栗子

- hosts: all
  vars_file:
      - vars/users.yml

而后可以可以在这些文件中定义playbook的变量

user: joe

home: /home/joe

3.放在命令行中的变量 使用 -e

ansible-playbook main,yml -e "package=apache"

4.使用数组作为变量

给出一个例子

users:
    bjones:
        first_name: Bob
        last_name: Jones
        home_dir: /users/bjones
    acook:
        first_name: Anne
        last_name: Cook
        home_dir: /users/acook

当要访问其中的值的时候可以

1.users.bjones.first_name

2.users['bjones']['first_name']

在playbook中使用变量

使用符号{{ }} 其中的变量会被替换其值

注意 当引用变量时如果其是开始的第一个元素 必须使用“”

也就是 - "{{user}}"

主机变量和组变量

主机变量:应用于特定主机

组变量:应用于特定的主机组或一组主机组中的所有主机

主机变量优先于组变量

但playbook中定义的变量的优先级比这两个都要高

#定义主机变量
[servers]
domo.example.com  ansible_user=joe
主机组                    变量


#定义servers主机组的组变量
[servers]
demo1.example.com
demo2.example.com

[servers:vars]#定义组变量
user=joe


#定义多个组的组变量
[server1]
demo1.example.com
demo2.example.com

[server2]
demo3.example.com
demo4.example.com

[servers:children]
server1
server2

[servers:vars]
user=joe

虽然推荐是直接再工作目录创建文件放置变量文件

文件中的变量和playbook中的内容语法一致

对于运行语句之后 比如playbook

产生的输出结果可以被管理员使用 register语句捕获 保存在一个临时变量中

可用于调试或者特定的配置

本章实验——管理变量

实验开始 lab data-variables start

首先去往工作目录 cd ~/data-variables

创建文件playbook.yml 并编写内容

---
  - name: deploy and start apache HTTPD service
    host: webserver
    vars:
        web_pkg: httpd
        firewall_pkg: firewalld
        web_service: httpd
        firewall_service: firewalld
        python_pkg: python3-PyMySQL
        rule: http
    tasks:
      - name: required packages are installed and up to date
        yum:
            name:
                - "{{web_pkg}}"
                - "{{firewall_pkg}}"
                - "{{python_pkg}}"
            state: latest
      - name: The {{firewall_service}} service is started and enabled
        service:
            name: "{{ firewall_service }}"
            enabled: true
            state: started
            
      - name: The {{web_service}} service is started and enabled
        service:
            name: "{{ web_service }}"
            enabled: true
            state: started
      - name: web content is in place
        copy: 
            content: "Example web content"
            dest: /var/ww/html/index.html
            
      - name: The firewall port for {{ rule }} is open
        firewalld:
            service: "{{ rule }}"
            permanent: true
            immediate: true
            state: enabled
  - name: verify the apache sevice
    hosts: localhost
    become: false
    tasks:
      - name: ensure the webserver is reachable
        uri: 
            url: http://servera.lab.example.com
            status_code: 200

语法检查 ansible-playbook playbook.yml --syntax-check

执行文件 ansible-playbook playbook.yml

等着结果呗

实验完成 lab data-variables finish

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值