Ansible入门

Ansible简介

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)、连接插件connection plugins:负责和被监控端实现通信;

(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)、各种模块核心模块、command模块、自定义模块;

(4)、借助于插件完成记录日志邮件等功能;

(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

通过Apt (Ubuntu)安装最新发布版本

[email protected]:~# apt-add-repository ppa:ansible/ansible

Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications— automate in a language that approaches plain English, using SSH, with no agents to install on remote systems.

http://ansible.com/

More info: https://launchpad.net/~ansible/+archive/ubuntu/ansible

Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keyring `/tmp/tmpi636boen/secring.gpg‘ created

gpg: keyring `/tmp/tmpi636boen/pubring.gpg‘ created

gpg: requesting key 7BB9C367 from hkp server keyserver.ubuntu.com

gpg: /tmp/tmpi636boen/trustdb.gpg: trustdb created

gpg: key 7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported

gpg: Total number processed: 1

gpg:               imported: 1  (RSA: 1)

OK

[email protected]:~# apt-get update -y

[email protected]:~# apt-get install ansible -y

配置 无密码访问

[email protected]:/etc/ansible# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:rSrNWrBMLzr7gUUqVZZUQU+bUYiVVoqev37/r3Xfmck [email protected]

The key‘s randomart image is:

+---[RSA 2048]----+

|   .+++++=o      |

|   o. .++=       |

|  . . ..=        |

| . o . . .       |

|. . + o S .      |

| . = + . .       |

|  . =oo o       o|

|  ...+o. ..   ..B|

|  o+oo..o. ...oE+|

+----[SHA256]-----+

[email protected]:/etc/ansible# ssh-copy-id 192.168.13.143

[email protected]:/etc/ansible# ssh-copy-id 192.168.13.144

[email protected]:~# vim /etc/ansible/hosts

192.168.13.143

192.168.13.144

[openstack]          #主机组:openstack

192.168.13.30

192.168.13.33

192.168.13.45

简单测试1

[email protected]:~# ansible all -m ping

192.168.13.143 | SUCCESS => {

"changed": false,

"ping": "pong"

}

192.168.13.144 | SUCCESS => {

"changed": false,

"ping": "pong"

}

简单测试2

[email protected]:~# ansible all -m command -a ‘uptime‘

192.168.13.144 | SUCCESS | rc=0 >>

07:39:00 up  6:02,  2 users,  load average: 0.00, 0.00, 0.00

192.168.13.143 | SUCCESS | rc=0 >>

07:39:00 up  5:58,  2 users,  load average: 0.06, 0.03, 0.01

[email protected]:~# ansible openstack -m command -a ‘uptime‘

192.168.13.33 | SUCCESS | rc=0 >>

15:43:18 up 4 days,  1:38,  1 user,  load average: 0.30, 0.26, 0.30

192.168.13.45 | SUCCESS | rc=0 >>

15:43:27 up 13 days,  1:08,  1 user,  load average: 0.12, 0.08, 0.08

192.168.13.30 | SUCCESS | rc=0 >>

15:43:27 up 26 days,  1:39,  2 users,  load average: 10.40, 10.49, 10.24

[email protected]:~#

常用模块介绍

1、setup:用来查看远程主机的一些基本信息

[email protected]:~# ansible openstack -m setup |more

2、ping: 用来测试远程主机的运行状态

[email protected]:~# ansible openstack -m ping

3、file:设置文件的属性

file选项如下:

force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no

group:定义文件/目录的属组

mode:定义文件/目录的权限

owner:定义文件/目录的属主

path:必选项,定义文件/目录的路径

recurse:递归设置文件的属性,只对目录有效

src:被链接的源文件路径,只应用于state=link的情况

dest:被链接到的路径,只应用于state=link的情况

state:

directory:如果目录不存在,就创建目录

file:即使文件不存在,也不会被创建

link:创建软链接

hard:创建硬链接

touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间

absent:删除目录、文件或者取消链接文件

[email protected]:# ansible openstack -m file  -a ‘src=/etc/resolv.conf dest=/home/resolv.conf state=link‘

192.168.13.33 | SUCCESS => {

"changed": true,

"dest": "/home/resolv.conf",

"gid": 0,

"group": "root",

"mode": "0777",

"owner": "root",

"size": 16,

"src": "/etc/resolv.conf",

"state": "link",

"uid": 0

}

查看执行结果:-m command 在远端执行命令

[email protected]:~# ansible openstack -m command -a ‘ls /home‘

[email protected]:~# ansible openstack -m command -a ‘ls /home‘

192.168.13.33 | SUCCESS | rc=0 >>

andy

resolv.conf

[email protected]:~# ansible openstack -m file -a ‘path=/home/resolv.conf state=absent‘

[email protected]:~# ansible openstack -m file -a ‘path=/home/resolv.conf state=absent‘

192.168.13.45 | SUCCESS => {

"changed": true,

"path": "/home/resolv.conf",

"state": "absent"

}

4、copy:复制文件到远程主机

相关选项如下:

backup:在覆盖之前,将源文件备份,备份文件包含时间信息。有两个选项:yes|no

content:用于替代“src”,可以直接设定指定文件的值

dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录

directory_mode:递归设定目录的权限,默认为系统默认权限

force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes

others:所有的file模块里的选项都可以在这里使用

src:被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。

[email protected]:~# ansible openstack -m copy -a ‘src=/root/aa.txt dest=/tmp‘

5、command:在远端主机上执行命令

相关选项如下:

creates:一个文件名,当该文件存在,则该命令不执行

free_form:要执行的linux指令

chdir:在执行指令之前,先切换到该目录

removes:一个文件名,当该文件不存在,则该选项不执行

executable:切换shell来执行指令,该执行路径必须是一个绝对路径

#ansible openstack -m command -a ‘uptime‘

[email protected]:~# ansible openstack -m command -a ‘uptime‘

192.168.13.30 | SUCCESS | rc=0 >>

16:11:43 up 27 days,  2:08,  3 users,  load average: 7.11, 7.81, 8.92

6、shell:切换到某个shell执行指定的命令,参数与command相同

与command不同的是,此模块可以支持命令管道,同时还有另一个模块也具备此功能:raw

[email protected]:~# vim data.sh

[email protected]:~# date +%F_%H:%M:%S

2016-08-24_08:16:50

[email protected]:~# chmod +x data.sh

[email protected]:~# ansible openstack -m copy -a ‘src=/root/data.sh dest=/tmp owner=root group=root mode=0755‘

192.168.13.30 | SUCCESS => {

"changed": true,

"checksum": "a0c5ebf2b8c213d26a864ff89b381afc2b1eb901",

"dest": "/tmp/data.sh",

"gid": 0,

"group": "root",

"md5sum": "159569349be4db486945c106d187ea4a",

"mode": "0755",

"owner": "root",

"size": 30,

"src": "/root/.ansible/tmp/ansible-tmp-1472026735.85-123460492539355/source",

"state": "file",

"uid": 0

}

[email protected]:~# ansible openstack -m command -a ‘ls -l /tmp/data.sh‘

192.168.13.30 | SUCCESS | rc=0 >>

-rwxr-xr-x 1 root root 30 Aug 24 16:18 /tmp/data.sh

[email protected]:~# ansible openstack -m shell -a ‘/tmp/data.sh‘

192.168.13.30 | SUCCESS | rc=0 >>

2016-08-24_16:20:00

7、其它模块

其他常用模块,比如:service、cron、yum、synchronize就不一一例举,可以结合自身的系统环境进行测试。

service:系统服务管理

cron:计划任务管理

yum:yum软件包安装管理

synchronize:使用rsync同步文件

user:系统用户管理

group:系统用户组管理

更多模块可以参考:

时间: 2024-08-05 19:43:18

Ansible入门的相关文章

ansible入门与playbook实战

一.简要 1.关于AnsibleAnsilbe是一个部署一群远程主机的工具;Ansilbe通过SSH协议实现远程节点和管理节点之间的通信.理论上说,只要管理员通过ssh登录到一台远程主机上能做的操作,Ansible都可以做到.Ansible是python开发的,故依赖一些python库和组件,如:paramiko,PyYaml和jinja三个关键组件; 2.ansible架构:右边绿色部分是被管理的主机(虚拟机,物理机,云主机等)从以上架构图中可以看出ansible是由主机清单(配置),play

Ansible 入门:安装 简例 playbook应用

Mysql 内:select unix_timestamp('2016-10-20')  <---> select from_unixtime(147662104) 转时间戳:date +%s   <--->  date -d @1476762104              ---- 小 Q -----------------------------------------------------------------------------------------------

Ansible 入门 (1) - 安装和配置

本文参考 <Ansible 自动化运维和最佳实践>,这两天刚读这本书,写写总结.主控机环境是 centos 7,被控机均是 centos 6.8 . 确保 python 版本大于 2.6 [[email protected] ~]# python Python 2.7.5 (default, Nov 20 2015, 02:00:19) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2 Type "help", "c

Ansible入门基础

常用自动化运维工具Ansible:python,Agentless,中小型应用环境 基于Python开发出来工具Saltstack:python,一般需部署agent,执行效率更高Puppet:ruby, 功能强大,配置复杂,重型,适合大型环境Fabric:python,agentlessChef: ruby,国内应用少Cfenginefunc Ansible发展史Ansible创始人,Michael DeHaan( Cobbler 与 Func 的作者)2012-03-09,发布0.0.1版,

Linux之ansible入门

一.安装ansible 环境是centos7.0 被管服务器:192.168.175.131 首先更换yum源 cd /etc/yum.repos.d/ cp CentOS-Base.repo CentOS-Base.repo.bak wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 没有wget就执行yum install -y wget yum makecache

ansible使用总结

ansible 入门:基础知识    链接1    链接2  链接3   链接4  链接5 原文地址:https://www.cnblogs.com/xhuangtao/p/10269696.html

Ansible的高级用法playbook

Ansible的高级用法playbook Ansible入门 playbook工作过程 YAML特性    YAML的可读性好    YAML和脚本语言的交互性好    YAML使用实现语言的数据类型    YAML有一个一致的信息模型    YAML易于实现    YAML可以基于流来处理    YAML表达能力强,扩展性好 YAML语法简介   1. 在单一档案中,可用连续三个连字号(--)区分多个档案.另外,还有选择性的连续三个点号( ... )用来表示档案结尾   2. 次行开始正常写P

细说Ansible主机清单inventory

Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. Ansible系列博文直达链接:Ansible入门系列 前言 关于Ansible是什么,我在之前的文章中没有说:当然了,我这里也不会说.当你看到我写的这篇文章时,我想你已经知道了Ansible是什么了,如果您还不知道什么是Ansible是什么,那我的建议是先去百度一下,知道了Ansible是什么了,知道了Ansible能干什么了以后,再回过头来继续阅读我这里的总结. 在Ansib

02Ansible入门

Ansible入门 定义主机清单 [[email protected] ~]# vim /etc/ansible/hosts [test] 172.22.69.216 ansible_ssh_user='root' ansible_ssh_pass='[email protected]' [web] 172.22.69.97 ansible_ssh_user='root' ansible_ssh_pass='[email protected]' 在主机清单中未定义的主机,无法使用ansible进