【Ansible之playbook剧本】
时间:2019-08-19
本文章向大家介绍【Ansible之playbook剧本】 ,主要包括【Ansible之playbook剧本】 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原文: http://blog.gqylpy.com/gqy/374
"@(Ansible之playbook剧本)
ymal:
- 列表:-
- 字典:key-value
- 文件后缀名:yml
ansible-playbook 命令格式:
- -C:--check 干跑,不会执行
- -f:FORKS 并发执行
- --syntax-check:语法检查
- --list-hosts:列出主机列表
基本用法
test.yml剧本文件内容如下:
sts: db # 指定主机
remote_user: root # 指定用户
tasks: # 任务列表
- name: create_user # 任务1
user: name=user01
- name: create_group # 任务2
group: name=group01
运行命令:ansible-playbook test.yml
当所有的机器都执行完第一个任务后才会执行第二个任务。
一个文件内可以有多个剧本,剧本与剧本之间用空格隔开。
传参使用
- hosts: db
remote_user: root
tasks:
- name: create_user{{ user }} # !
user: name={{ user }} # !
指定命令:ansible-playbook -e user=user01 test.yml
其它传参方式
在/etc/ansible/hosts文件中传参,如下示例:
[db] 9.0.0.2 user=user02 # user=user02指定参数 9.0.0.3 user=user03
在 hosts 文件中这样写 [groupname:vars]
在 playbook 文件中通过 vars 来指定参数
通过 register 注册传参,使用的时候要用参数的 .stdout 值
条件判断 when
只在满足某个条件后才执行某个任务,基本格式如下:
- hosts: db
remote_user: root
tasks:
- name: 任务1
动作:动作1
when: 条件1
- name: 任务2
动作: 动作2
when: 条件2
示例
test.yml剧本如下:
- hosts: db remote_user: root tasks: - name: create_user user: name=user01 when: num == '1' - name: create_group group: name=group01 when: num == '2'
执行命令:
# 当指定num='1'时,则执行create_user任务 ansible-playbook -e num='1' test.yml # 当指定num='2'时,则执行create_group任务 ansible-playbook -e num='1' test.yml
我们一般都使用收集到的信息变量来做判断,很少使用变量做判断,见下面。
收集被管控机信息
收集命令:
ansible db -m setup
- ansible_all_ipv4_addresses: 所有ipv4的地址
- ansible_all_ipv6_addresses: 所有ipv6的地址
- ansible_architecture: 系统架构
- ansible_data_time: 系统时间
- LANG: 系统语言
- ansible_default_ipv4: 默认的ipv4的地址
- sda: 磁盘信息
- ansible_distribution_file_path: 系统的家族
- ansible_distribution_major_version: 系统版本
- ansible_domain: 所在的域
- ansible_env: 环境变量
- ansible_hostname: 主机名,简写
- ansible_lvm: 磁盘lvm信息
- ansible_os_family: 系统的家族信息
- ansible_processor_cores: CPU核心数
- ansible_processor_count: CPU的颗数
- ansible_processor_vcpus: CPU的个数
- ansible_python: Python信息
根据被管控机的信息来做判断
test.yml文件如下:
- hosts: db remote_user: root tasks: - name: create_user user: name=user01 when: ansible_processor_vcpus==1 - name: create_group group: name=group01 when: ansible_processor_vcpus==2
执行命令:
ansible-playbook test.yml
还可以像这样取字典内的值:when ansible_python.version.major==1
标签 tags
- hosts: db
remote_user: root
tasks:
- name: start_firewalld
service: name=firewalld state=started
tags: start
模板 template
- hosts: db
remote_user: root
tasks:
- name: copy_file
template: dest=/etc/yum.conf src=yum.conf.j2
# src可以使用相对路径,在当前目录的templates目录里面
循环 with_item
基本用法如下:
- hosts: db
remote_user: root
tasks:
- name: create_user
user: name={{ item }}
with_items:
- user001
- user002
- user003
# 这里将创建3个用户
循环嵌套:
- hosts: db
remote_user: root
tasks:
- name: create_user
user: name={{ item.name }} group={{ item.group }}
with_items:
- {name: user001, group: group001}
- {name: user002, group: group002}
- {name: user003, group: group003}
handlers
如果 tasks 下的任务执行成功,则执行 handlers 下的任务,否则不执行:
- hosts: db
remote_user: root
tasks:
- name: create_user
user: name=user03
handlers:
- name: test_handlers
shell: echo "create user is ok." > /tmp/text.txt
"
原文: http://blog.gqylpy.com/gqy/374
原文地址:https://www.cnblogs.com/gqy02/p/11374955.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法