设为首页 加入收藏

TOP

ansible变量(一)
2019-09-20 11:46:13 】 浏览:118
Tags:ansible 变量

ansible变量

定义变量的方式

  • 命令行
  • playbook
  • 主机清单

如何定义变量

1.在playbook中定义变量

#方法一:
- hosts: db02
  vars:
    pkg:
      - MySQL-python
      - mariadb-server
  tasks:
    - name: 
      yum:
        name: "{{ pkg }}"
        state: present
  
#方法二:
- hosts: db01
  vars:
     web_pkg: httpd
     db_pkg:
       - unzip
       - vsftpd
     php_pkg:
       - php-fpm
       - php
       - php-mysql

2.使用vars_files定义变量

#定义阶段
[root@m01 project]# vim vars_file.yml
web_pkg: httpd
db_pkg: mariadb-server
php_pkg: php

#调用阶段
[root@m01 project]# vim httpd.yml 
- hosts: web_group
  vars_files: ./vars_file.yml
  tasks:
    - name: Install httpd
      yum:
        name: "{{ db_pkg }}"
        state: present

3.使用ansible内置变量

vim mkdri.yml
- hosts: web_group
  tasks:
    - name: MKDIR
      file:
        path: /backup/{{ ansible_fqdn }}_{{ ansible_default_ipv4['address'] }}_{{ ansible_date_time['date'] }}
        state: directory
        recurse: yes

4.使用主机清单定义变量

#定义阶段
[webs]
zls_web01 ansible_ssh_host=172.16.1.7
zls_web02 ansible_ssh_host=172.16.1.8

[webs:vars]
web_pkg=nginx

[backup_group]
backup ansible_ssh_host=172.16.1.41

[db_group]
db01 ansible_ssh_host=172.16.1.51
db02 ansible_ssh_host=172.16.1.52

[nfs_group]
nfs ansible_ssh_host=172.16.1.31

[rsync_server:children]
web_group
backup_group

[rsync_server:vars]
web_pkg=httpd

[nfs_server:children]
web_group
nfs_group

调用变量

- hosts: zls_web01
  tasks:
    - name: Install web server
      yum:
        name: "{{ web_pkg }}"
        state: present

5.官方推荐方式

#定义阶段
#创建主机组变量定义目录
mkdir group_vars
[root@m01 ~]# vim group_vars/webs
web_pkg: httpd

#定义阶段
[root@m01 ~]# cat group_vars/webs 
web_pkg: httpd
#定义阶段
[root@m01 ~]# cat host_vars/zls_web01 
web_pkg: nginx

[root@m01 ~]# vim web.yml 
- hosts: webs
  tasks:
    - name: Install web server
      yum:
        name: "{{ web_pkg }}"
        state: present

6.命令行定义变量

#调用阶段
[root@m01 ~]# !vim
vim web.yml 
- hosts: webs
  tasks:
  - name: Install httpd Server
    yum:
      name:
        - "{{ web_pkg }}"

  - name: Install mariadb Server
    yum:
      name:
        - "{{ db_pkg }}"


#定义阶段
[root@m01 ~]# ansible-playbook web.yml -e "web_pkg=vsftpd" -e "db_pkg=unzip"

ansible变量优先级测试

- hosts: webs
  vars:
    dir: playbook_vars
  vars_files: ./vars_file.yml
  tasks:
    - name: Create Dir
      file:
        path: /opt/{{ dir }}
        state: directory
[root@m01 ~]# vim vars_file.yml
dir: vars_file

[root@m01 ~]# vim host_vars/zls_web01
dir: host_vars

[root@m01 ~]# vim group_vars/webs
dir: group_vars

测试阶段

[root@m01 ~]# ansible-playbook test.yml -e "dir=command_vars"
[root@web01 ~]# ll /opt/
total 0
drwxr-xr-x 2 root root 6 Sep 19 16:48 command_vars

#2.
[root@m01 ~]# ansible-playbook test.yml
[root@web01 ~]# ll /opt/
total 0
drwxr-xr-x 2 root root 6 Sep 19 16:48 command_vars
drwxr-xr-x 2 root root 6 Sep 19 16:50 vars_file

#3.
[root@m01 ~]# vim test.yml 
- hosts: webs
  vars:
    dir: playbook_vars
  tasks:
    - name: Create Dir
      file:
        path: /opt/{{ dir }}
        state: directory

[root@m01 ~]# ansible-playbook test.yml
[root@web01 ~]# ll /opt/
total 0
drwxr-xr-x 2 root root 6 Sep 19 16:48 command_vars
drwxr-xr-x 2 root root 6 Sep 19 16:52 playbook_vars
drwxr-xr-x 2 root root 6 Sep 19 16:50 vars_file

#4.
- hosts: webs
  tasks:
    - name: Create Dir
      file:
        path: /opt/{{ dir }}
        state: directory

[root@m01 ~]# ansible-playbook test.yml

==命令行 > vars_file > playbook va

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Mysql语句练习记录 下一篇ORACLE 12.2RAC之问题 ora.chad O..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目