Ansible变量管理

一、 facst 事实变量(受管主机默认变量)
案例1:为所有主机剩余(可用)内存大于2G的受管主机,安装httpd
2)编写剧本:
vim http.yml

- hosts: all
  tasks:
    - name: 清空安装源目录
      shell: rm -f /etc/yum.repos.d/*
      when: ansible_distribution == "CentOS"
    - name: 拷贝本地光碟源文件
      copy: 
        src: cdrom.repo
        dest: /etc/yum.repos.d
      when: ansible_distribution == "CentOS"
    - name: 挂载光碟
      mount:
        src: /dev/cdrom
        path: /mnt
        state: mounted
        fstype: iso9660
    - name: 安装httpd
      yum:
        name: httpd
        state: installed
      when: ansible_memfree_mb >= 2000

ansible 调式模块:
debug

例如:显示任务结果
- hosts: 192.168.10.10
  tasks:
    - name: 列出所有文件
      shell: ls /etc/yum.repos.d
      register: cc
    - name: 回显第一任务结果内容
      debug: msg="{{ cc }}"

如果想回显msg内容某一个值,比如cc.stdout,就会回显stdout的值
- hosts: 192.168.10.10
  task:
    - name: 列出所有文件
      shell: ls /etc/yum.repos.d
      register: cc
    - name: 回显第一任务结果内容
      debug: msg="{{ cc.stdout }}"


案例2:为以下主机执行以下任务
1)安装软件
为docker服务器安装docker-ce
为cinder服务器安装lvm

编写playbook:

实验前准备:
cdrom.repo
docker-ce.repo

编写剧本:
vim test.yml

- hosts: all
  vars:
    - aaa: httpd
    - bbb: vim
  tasks:
    - name: 列出主机软件库目录所有文件
      shell: ls /etc/yum.repos.d
      register: d
    - name: 清除所有默认安装源文件
      file:
        path: /etc/yum.repos.d/{{ item }}
        state: absent
      with_items:
        - "{{ d.stdout_lines }}"
    - name: 拷贝本地光碟源文件
      copy:
        src: cdrom.repo
        dest: /etc/yum.repos.d
    - name: 挂载光碟
      mount:
        src: /dev/cdrom
        path: /mnt
        state: mounted
        fstype: iso9660
    - name: 为docker服务器安装"{{ aaa }}"
      yum:
        name: "{{ aaa }}"
      when: ansible_fqdn == "docker02"
    - name: 为cinder服务器安装"{{ bbb }}"
      yum:
        name: "{{ bbb }}"
      when: ansible_fqdn == "cinder"

 可以清单中定义变量,比如aaa=httpd,bbb=vim,写入对应主机记录

临时变量:
可以在执行剧本时,使用 -e添加临时变量,此变量优先级最高
比如:ansible-playbook yum.yml -e "aaa=elinks"

template 模板模块
场景:
1.为所有服务器安装httpd
2.storage组的httpd开放8080端口
3.docker组的httpd开放8088端口

准备httpd.conf.j2模板文件
(从已安装httpd服务器获取httpd.conf)

在httpd.conf第42行,将Listen的值设置为变量
比如
Listen {{ aaa }}
然后在清单中,定义aaa的值

[storage]
192.168.10.10 ansible_become_method='su' ansible_become_user='root' ansible_become_pass='123456' aaa=8080
[docker]
192.168.10.100  ansible_become_method='su' ansible_become_user='root' ansible_become_pass='1' aaa=8088


编写剧本:
- hosts: all
  tasks:
    - name: 列出主机软件库目录所有文件
      shell: ls /etc/yum.repos.d
      register: d
    - name: 清除所有默认安装源文件
      file:
        path: /etc/yum.repos.d/{{ item }}
        state: absent
      with_items:
        - "{{ d.stdout_lines }}"
    - name: 拷贝本地光碟源文件
      copy:
        src: cdrom.repo
        dest: /etc/yum.repos.d
    - name: 挂载光碟
      mount:
        src: /dev/cdrom
        path: /mnt
        state: mounted
        fstype: iso9660
    - name: 安装httpd
      yum:
        name: httpd
        state: installed
    - name: 拷贝模块httpd.conf.j2
      template:
        src: httpd.conf.j2
        dest: /etc/httpd/conf/httpd.conf
    - name: 启动服务,加入开机自启
      service:
        name: httpd
        state: started
        enabled: true
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值