ansible之playbook功能简述
Posted 马哥Linux运维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible之playbook功能简述相关的知识,希望对你有一定的参考价值。
playbooks是ansible更为强大的配置管理组件,实现基于文本文件编排执行的多个任务,且多次重复执行。其是使用YAML(Yet Another Markup Language),类似于半结构化语言,声明式配置,可读性较高。易于与脚本语言交互
ansible_ssh_port : 指定ssh端口
ansible_ssh_user : 指定ssh用户
ansible_ssh_pass : 指定ssh用户登录认证密码,明文密码
ansible_sudo_pass : 指明sudo时候的密码
[webserver]
172.16.36.70 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=zhenping.me
inventory参数:(用于hosts定义的主机后面,多个使用空格分隔)
Roles : 角色,用于调度不同的playbooks
每一行是一个键值数据key:value,使用冒号分隔,若想在一行标识需要使用{}和,将多个kv分隔开
- hosts: webserver
remote_user: root
tasks:
- name: install nginx
yum: name=nginx state=present
- name: start nginx
service: name=nginx state=started enabled=true
- name: install php-fpm
yum: name=php-fpm state=present
- name: start php-fpm
service: name=php-fpm state=started enabled=true
vars
handlers
- hosts: dbserver
remote_user: root
tasks:
- name: install mysql
yum: name=mysql state=present
由远程主机发回的主机特有的属性信息,这些信息被保存在ansible变量中,无须声明,可直接调用
~]# ansible-playbook test.yml -extra-vars “hosts=www user=zhenping”
定义在inventory中的主机之后的变量,直接传递给单个主机的变量
[webserver]
172.16.36.70 username=zhenping pass=zhenping
172.16.36.71
[webserver]
172.16.36.70
172.16.36.60
[webserver:vars]
var1=value
var2=value
- hosts: webserver
remote_user: root
vars:
user: user2
pass: 123321
tasks:
- name: add user
user: name={{ user }} state=present
- name: set password
shell: /bin/echo {{ pass }} | passwd --stdin {{ user }}
手动运行playbook脚本时,传递变量(手动传递时,优先级要高于脚本中的变量)
ansible-playbook script.yml --extra-vars "username=ubunt"
ansible-playbook script.yml -e VARS
在某task后面添加when子句,即可实现条件测试功能,when语句支持jinja2语法
####当主机的操作系统为redhat系列操作系统时,才执行yum安装
- name: yum install keepalived
yum: name=keepalived state=present
when: ansible_os_family == "ReaHat"
shell: /bin/echo "hello world"
在task中调用内置的Item变量,在某task后面使用with_items语句来定义元素列表
- hosts: webserver
remote_user: root
tasks:
- name: user add
user: name={{ item }} state=present
with_items:
- testuser1
- testuser2
- testuser3
- testuser4
user: name={{ item.name }} state=present group={{ item.groups }}
- { name: 'tom2', groups: 'tom' }
- { name: 'tom2', groups: 'tom2' }
playbook—handlers: 处理器、触发器
- hosts: webserver
remote_user: root
tasks:
- name: yum install nginx
yum: name=nginx state=present
- name: start nginx
service: name=nginx state=started enabled=true
- name: copy configuration file
copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
notify: restart nginx
handlers:
- name: restart nginx
service: name=nginx state=reloaded
马哥教育历经近10年发展,已成为面向企业级资深运维工程师、架构师的专业集训营式高端就业Linux培训学院。凭借多年良好口碑,其已经成为业内知名互联网公司重要人才战略合作伙伴,获得了百度、腾讯、阿里、大众点评、51CTO、唯品会、京东、中移动、新浪、红帽等互联网巨头的合作支持。毕业学员平均薪资达10K以上,累计受益人员达百万+。
以上是关于ansible之playbook功能简述的主要内容,如果未能解决你的问题,请参考以下文章
Ansible自动化运维之Playbook详解及体验
Playbooks简介
ansible-playbook剧本
Ansible自动化运维工具Ansible的playbook基本用法
1. ansible-playbook 变量定义与引用
3 ansible-playbook 条件语句-外部变量使用