一、Ansible特点

1、不需要安装客户端,通过sshd通信

2、基于模块工作,模块可以由任何序言开发

3、不仅支持命令行使用模块,也支持编写yaml格式的playbook

4、支持sudo

5、有提供UI(浏览器图形化)www.ansible.com/tower10台主机以内免费

6、开源UI https://github.com/alaxli/ansible_ui文档

http://download.csdn.net/detail/liyang23456/7741185

二、Ansible安装

两台机器10.10.10.201和10.10.10.156

只需要在10.10.10.201上安装ansible即可

# yum -y install epel-release

# yum -y install ansible

三、Ansible配置秘钥

在10.10.10.201生成秘钥对

# ssh-keygen -t rsa直接回车即可,不用设置秘钥密码

把公钥(id_rsa.pub)内容放到10.10.10.156的/root/.ssh/authorized_keys里面

# scp id_rsa.pub slave.fanisk.com:/root/.ssh/authorized_keys

本机也要操作

# chmod 600 /root/.ssh/authorized_keys

关闭selinux

三、Ansible远程执行命令

# ansible fansik -m command -a 'hostname'

fansik为主机组的名字,-m后边是模块的名字,-a后面是命令,也可以写一个ip,针对一台机器来执行命令

还有一个模块shell也同样可以实现(可以执行脚本,支持管道符):

# ansible fansik -m shell -a 'hostname'

如果出现错误(copy文件的时候就会出现了):

slave.fansik.com | FAILED! => {

"changed": false,

"checksum": "7267a346473f1d39c1e8c2c0b43d40a42c37eb28",

"failed": true,

"msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"

需要安装libselinux-python包:

# yum -y install libselinux-python

编辑ansible的配置文件,添加主机组

# vim /etc/ansible/hosts

[fansik]

127.0.0.1

slave.fansik.com

fansik为主机组名字,自定义,下面为组内的机器可以是ip也可以是主机名

四、Ansible拷贝文件或目录

# ansible slave.fansik.com -m copy -a "src=/tmp/wohenhao dest=/tmp/wobuhao owner=root group=root mode=0644"

注意:源目录会放到目标目录下面去,如果目标制定的目录不存在,它会自动创建,如果copy的是文件,dest指定得名字和源如果不同,并且它不是已经存在的目录,相当于copy过去后有重命名,但相反,若果dest是目标机器上已经存在的目录,则会直接把文件copy到该目录下面

# ansible fansik -m copy -a "src=/etc/passwd dest=/tmp/wobuhao"

这里的/tmp/wobuhao和源机器上的/etc/passwd是一直的,如果目标机器上已经存在/tmp/wobuhao目录,则会在/tmp/wobuhao目录下面建立passwd文件

五、Ansible远程执行脚本

远程执行脚本需要将脚本分发到各个机器上去

# ansible fansik -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"

然后在批量执行脚本

# ansible fansik -m shell -a "/tmp/test.sh"

五、Ansible实现任务计划

创建任务计划

# ansible fansik -m cron -a "name='fanjinbao' job='/bin/touch /tmp/shishi.txt' minute=5 weekday=6"

删除任务计划

# ansible fansik -m cron -a "name='fanjinbao' state=absent"

其他的时间表示:分钟:minute,小时:hour,日期:day,月:month

五、Ansible实现任务计划

# ansible fansik -m yum -a "name=httpd"

在name后面还可以加上state=installed

# ansible fansik -m service -a "name=httpd state=started enabled=yes"

这里的name是centos系统里面的服务名,可以通过chkconfig --list查到

Ansible文档的使用

# ansible-doc -l 列出所有的模块

# ansible-doc service 查看指定模块的文档

六、Ansible playbook的使用

1、在/tmp/目录下创建playbook.txt文件

# vim /etc/ansible/test.yml

---

- hosts: fansik

remote_user: root

tasks:

- name: test_playbook

shell: touch /tmp/playbook.txt

说明:host参数指定了对哪些主机进行操作;

user参数指定了使用什么用户登录远程主机操作;

tasks指定了一个任务,其下面的name参数同样是任务的描述,在执行过程中会打印出来

执行:# ansible-playbook test.yml

2、创建test用户

---

- name: create_user

hosts: slave.fansik.com

user: root

gather_facts: false

vars:

- user: "test"

tasks:

- name: create user

user: name="{{ user }}"

说明:name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印name变量的值,可以省略,gather facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到;vars参数,指定了变量,这里指定一个user变量,其值为test,需要注意的是,变量值一定要用引号引住;user指定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。

七、Ansible playbook中的循环

改变slave.fansik.com的/tmp/目录下的1.txt、2.txt、3.txt的权限为600

# vim loop.yml

---

- hosts: slave.fansik.com

user: root

tasks:

- name: change mode for files

file: path=/tmp/{{ item }} mode=600 owner=root group=root

with_items:

- 1.txt

- 2.txt

- 3.txt

八、Ansible playbook条件判断

如果fansik主机组中有10.10.10.201这个机器就在该机器的/tmp/下面创建when.txt

---

- hosts: fansik

user: root

gather_facts: True

tasks:

- name: use when

shell: touch /tmp/when.txt

when: facter_ipaddress == "10.10.10.201"

九、Ansible playbook中的handers

执行tasks之后,服务器发生变化之后执行的一些操作,比如我们修改了配置文件后,需要重启一下服务

---

- hosts: fansik

remote_user: root

tasks:

- name: test copy

copy: src=/etc/passwd dest=/tmp/2.txt

notify: test handlers

handlers:

- name: test handlers

shell: echo "121212" >> /tmp/2.txt

说明:只有copy模块真正执行后,才会去调用下面的handlers相关的操作。也就是说passwd和2.txt内容是一样,并不会去执行handlers里面的shell相关命令命令,这种比较适合配置文件发生改变后,重启服务等操作。

Ansible安装配置及使用的更多相关文章

  1. Ansible安装配置及命令使用详解

    Ansible和saltstack目前市面上一些其它的项目管理工具有很大的不同,它的设计初衷就是为了更方便.快捷的进行配置管理.它易于安装和使用.语法也非常简单易学.你可以用Ansible将平常复杂的 ...

  2. Ansible安装配置Nginx

    一.思路 现在一台机器上编译安装好nginx.打包,然后在用ansible去下发 cd /etc/ansible 进入ansible配置文件目录 mkdir roles/{common,install ...

  3. Ansible安装配置

    Ansible工具的安装与配置 Ansible基于SSH,不需要在远程端安装任何软件,只需要在管理端安装ansible及其组件即可. Ansible使用前提是已配置ssh密钥免登陆. 一.安装组件: ...

  4. 1、Ansible安装配置

    ansible介绍: Ansible是一款基于Python开发的自动化运维工具,主要是实现批量系统配置.批量程序部署.批量运行命令.批量执行任务等等诸多功能.Ansible是一款灵活的开源工具,能够很 ...

  5. ansible安装配置及最佳实践roles

    ansible是什么? ansible是一款轻量级配置管理工具,用于远程批量部署.安装.配置.类似的还有puppet.saltstack,各有所长,任君自选. 官方文档:http://docs.ans ...

  6. ansible安装配置zabbix客户端

     安装软件 ansible host -m apt -a "name=zabbix-agent state=present" ansible host -m shell -a ...

  7. (一)ansible 安装配置

    CentOS 7.5 一,安装 yum -y install ansible 二,配置hosts文件 /etc/ansible/hosts s1 ansible_ssh_port= ansible_s ...

  8. ansible安装配置及基本用法

    ansiblle具有如下特点: 1.部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作: 2.默认使用SSH协议对设备进行管理: 3.主从集中化管理: 4.配置简单.功能强大.扩展性强 ...

  9. 使用ansible安装配置zabbix客户端

    ansible角色简介: 目录名 说明 defaults 默认变量存放目录 handlers 处理程序(当发生改变时需要执行的操作) meta 角色依赖关系处理 tasks 具体执行的任务操作定义 t ...

随机推荐

  1. Java 类的高级特征2

    1. static 关键字 static,静态的,可以用来属性.方法.*代码块(或初始化块).*内部类 (1) static修饰属性(类变量):  1.由类创建的所有的对象,都共用这一个属性 2.当其 ...

  2. 关于java中super()和this()

    在java中this表示当前类中的对象,super则表示父类中的对象.比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的,当然,this的另一个用途是调用当前对象的另一个 ...

  3. tic/toc/cputime测试时间

    cputime测试代码运行时间可能不及tic/toc准确是众所周知的事情.本文并非旧话重提,而是期望起到抛砖引玉的效果,从而找到cputime与tic/toc内在的区别.望不吝赐教! 用tic/toc ...

  4. 1.6 suid/guid

    1.很系统供应商不允许使用这一命令,或者即使被置位,也会被忽略,这一命令会带来安全性风险. suid意味着该用户对自己的shell脚本设置了这种权限,那么其他用户执行该脚本时,也将拥有该用户相同的权限 ...

  5. allegro si(三)

    前言:si的教程市面上是很少的,layout是台湾工程师的强项,还有就是日本人,国人爱用AD. si的教程中靠谱的还是张飞的收费课程,还有华为的资料. Cadence SI 仿真实验步骤如下: 1.熟 ...

  6. Windows共享设定-使用net use添加网络盘带上账号密码

    食欲 net use \\10.11.1.2\ipc$ /user:dmnm\usr "pwd"

  7. UNION语句查询(转载)

    联合查询   在对数据信息进行操作时,有时需要将不同数据表中的数据信息组合在一起,这时需要使用联合查询.联合查询指的是将多表中的行数据组合在一个数据集中进行显示.本节将讲解有关联合查询方面的相关知识. ...

  8. 为什么web标准中无法设置IE浏览器滚动条颜色了?

    <!doctype html><html> <head> <meta charset="UTF-8"> <meta name= ...

  9. HDU 4405

    http://acm.hdu.edu.cn/showproblem.php?pid=4405 题意:飞行棋,可以跳,从0走到n,问期望步数 题解:dp[i]表示从i走到n的期望,逆推,因为每次都要走一 ...

  10. VS.net中快捷键收缩和展开代码段

    i. Ctrl-M-O   折叠所有方法 ii. Ctrl-M-P   展开所有方法并停止大纲显示(不可以再折叠了) iii. Ctrl-M-M   折叠或展开当前方法 iv. Ctrl-M-L展开所 ...