一、介绍

playbook就是一个用yaml语法把多个模块堆起来的一个文件

核心组件:

Hosts:执行的远程主机列表
Tasks:任务,由模块定义的操作的列表;
Varniables:内置变量或自定义变量在playbook中调用
Templates:模板,即使用了模板语法的文本文件;
Handlers:和nogity结合使用,为条件触发操作,满足条件方才执行,否则不执行;
Roles:角色;

yaml文件示例

- hosts: 10.1.0.1        #定义主机
vars: #定义变量
var1: value
var2: value
tasks: #定义任务
- name: #任务名称。
#这里就可以开始用模块来执行具体的任务了。 handlers: #定义触发通知所作的操作。里面也是跟tasks一样,用模块定义任务。
- name: remote_user: #远程主机执行任务时的用户。一般都是root,一般也不用指定。 - hosts: web
vars:
tasks:
handlers:
remote_user:

二、简单使用

1、安装httpd

[root@master ~]# cat httpd.yaml
- hosts: all
tasks:
- name: "安装Apache"
command: yum install --quiet -y httpd httpd-devel
- name: "启动Apache,并设置开机启动"
command: service httpd start
command: chkconfig httpd on
#测试
[root@master ~]# ansible-playbook --check http.yaml

2、修改ssh密码

[root@master ~]# cat user.yaml
- hosts: all
remote_user: root
tasks:
- name: update user password
user: name={{name}} password={{chpass|password_hash('sha512')}} update_password=always [root@master ~]# ansible-playbook user.yaml -e "name=www chpass=123456"

3、添加ssh账号与sudo授权

[root@master ~]# cat add_user.yaml
- hosts: test
tasks:
- name: create ssh user
user: name={{username}} password={{mypass|password_hash('sha512')}}
- name: sudo
lineinfile: dest=/etc/sudoers state=present regexp=^%{{username}} line={{username}}\t{{sudo}} #使用创建zhang账号并sudo授予为ALL
[root@master ~]# ansible-playbook add_user.yaml -e "username=zhang mypass=123456 sudo='ALL=(ALL) ALL'" #测试
[root@master ~]# ssh zhang@172.31.0.181
zhang@172.31.0.181's password: Welcome to Alibaba Cloud Elastic Compute Service ! [zhang@node ~]$ sudo ls -l /root/.ssh/ We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things: #1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility. [sudo] password for zhang:
total 4
-rw------- 1 root root 393 Jan 15 13:41 authorized_keys

最新文章

  1. ASP.NET MVC中将控制器分离到类库的实现
  2. iOS开发 -- 为本地文件添加自定义属性的工具类
  3. avalon---qunar ued
  4. mq_unlink
  5. Java NIO的多路复用及reactor
  6. Sql Server 和 Access 数据库在书写sql语句时的语法差异
  7. appendChild方法详解
  8. [十八]JavaIO之FileReader 和 FileWriter
  9. Windows10 磁盘100%解决办法
  10. Ionic3实现选项卡切换可以重新加载echarts
  11. POI导出Excel发现不可读取的内容
  12. BZOJ.2660.[BJOI2012]最多的方案(DP)
  13. 【Linux技术】autotools制作makefile过程详解
  14. PrefixHeader.pch 在工程中的使用
  15. Alpha阶段事后诸葛亮分析
  16. nginx于tomcat项目整合(拆分静态文件)
  17. Django 中间件实现用户认证与IP频率限制
  18. Android学习--探究服务(二)
  19. linux 文件查找实用技巧
  20. WinForm各种关闭

热门文章

  1. [MCM] 多目标优化 MOP(multi-objective programming)
  2. 转:// LINUX下为ORACLE数据库设置大页--hugepage
  3. centos7 mysql5.7安装
  4. Control4系统对接arduino
  5. vue是一个渐进式的框架,如何理解“渐进式”
  6. git 忽略无效解决办法
  7. 在ASP.NET Core MVC中子类Controller拦截器要先于父类Controller拦截器执行
  8. Spring+SpringMVC+Mybatis框架整合流程
  9. Groovy语言学习--语法基础(5)
  10. mskitten