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)安装最新发布版本

root@storage:~# 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

root@storage:~# apt-get update -y

root@storage:~# apt-get install ansible -y

配置 无密码访问 

root@storage:/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 root@storage

The key's randomart image is:

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

|   .+++++=o      |

|   o. .++=       |

|  . . ..=        |

| . o . . .       |

|. . + o S .      |

| . = + . .       |

|  . =oo o       o|

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

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

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

root@storage:/etc/ansible# ssh-copy-id 192.168.13.143

root@storage:/etc/ansible# ssh-copy-id 192.168.13.144

root@storage:~# 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

root@storage:~# ansible all -m ping

192.168.13.143 | SUCCESS => {

    "changed": false,

    "ping": "pong"

}

192.168.13.144 | SUCCESS => {

    "changed": false,

    "ping": "pong"

}

简单测试2

root@storage:~# 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

root@storage:~# 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

root@storage:~#



常用模块介绍

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

root@storage:~# ansible openstack -m setup |more

spacer.gifwKioL1e9Wn-xbeXlAABD0RudinA045.png-wh_50


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

root@storage:~# ansible openstack -m ping

spacer.gifwKioL1e9WmHTfBtHAAAds2Wxzg0555.png-wh_50


3、file:设置文件的属性

     file选项如下:

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

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

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

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

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

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

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

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

state:

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

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

       link:创建软链接

       hard:创建硬链接

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

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

root@storage:# 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 在远端执行命令

root@storage:~# ansible openstack -m command -a 'ls /home'

root@storage:~# ansible openstack -m command -a 'ls /home'

192.168.13.33 | SUCCESS | rc=0 >>

andy

resolv.conf

root@storage:~# ansible openstack -m file -a 'path=/home/resolv.conf state=absent'

root@storage:~# 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

root@storage:~# ansible openstack -m copy -a 'src=/root/aa.txt dest=/tmp'

spacer.gif

wKiom1e9WiaitnjyAAA8lDPPKUI880.png-wh_50

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

相关选项如下:

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

free_form:要执行的linux指令

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

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

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

#ansible openstack -m command -a 'uptime'

root@storage:~# 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


root@storage:~# vim data.sh

root@storage:~# date +%F_%H:%M:%S

2016-08-24_08:16:50

root@storage:~# chmod +x data.sh

root@storage:~# 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

}


root@storage:~# 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


root@storage:~# ansible openstack -m shell -a '/tmp/data.sh'

192.168.13.30 | SUCCESS | rc=0 >>

2016-08-24_16:20:00


7、其它模块

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

service:系统服务管理

cron:计划任务管理

yumyum软件包安装管理

synchronize:使用rsync同步文件

user:系统用户管理

group:系统用户组管理


更多模块可以参考:

wKiom1e9WgSyqrDKAADsIVGDuIU725.png-wh_50




本文转自 OpenStack2015 51CTO博客,原文链接:http://blog.51cto.com/andyliu/1842081,如需转载请自行联系原作者

相关文章
|
存储 运维 Linux
Ansible自动化运维工具安装入门,看这一篇就够了(1)
Ansible自动化运维工具安装入门,看这一篇就够了(1)
173 0
|
9月前
|
运维 自然语言处理 安全
自动化运维的利器:Ansible入门与实践
【8月更文挑战第33天】在现代IT基础设施的管理中,自动化运维已成为提高效率、减少错误的关键技术。Ansible作为一款开源的自动化配置管理和应用部署工具,以其简洁性、易用性和强大的功能受到广泛欢迎。本文将介绍Ansible的基本概念、安装步骤和简单使用,通过实际案例展示其在自动化运维中的应用。
|
10月前
|
运维 Devops 应用服务中间件
自动化运维的利器:Ansible入门与实践
【8月更文挑战第27天】在这个数字化时代,高效的系统管理变得尤为重要。Ansible,作为一个简单而强大的自动化运维工具,正逐渐成为DevOps工程师的首选。本篇文章将带你了解Ansible的基本概念,通过实际操作演示其如何简化日常任务,以及它如何帮助你实现自动化部署和配置管理。无论你是初学者还是有经验的运维人员,这篇文章都将为你提供有价值的信息和启示。
|
7月前
|
运维 负载均衡 Ubuntu
自动化运维的利器:Ansible入门与实践
【10月更文挑战第31天】在当今快速发展的信息技术时代,高效的运维管理成为企业稳定运行的关键。本文将引导读者了解自动化运维工具Ansible的基础概念、安装步骤、基本使用,以及如何通过实际案例掌握其核心功能,从而提升工作效率和系统稳定性。
|
8月前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible入门与实践
【10月更文挑战第21天】在现代IT基础设施的管理中,自动化运维已成为提升效率、降低错误率的关键。Ansible,作为一种简单而强大的自动化工具,正被广泛应用于配置管理、应用部署和任务自动化等领域。本文将引导你了解Ansible的基本概念,通过实际案例展示如何利用Ansible简化日常运维工作,并探讨其在现代IT运维中的应用价值。无论你是新手还是有经验的系统管理员,这篇文章都将为你开启Ansible的高效之旅提供指导。
|
9月前
|
运维 Ubuntu Devops
自动化运维工具的魅力:Ansible入门
【9月更文挑战第5天】在快速变化的IT世界里,自动化运维不再是可选项,而是必需品。Ansible,一款简单却强大的自动化工具,正成为众多DevOps工程师的首选。本文将带你了解Ansible的基本概念、安装步骤以及如何编写简单的Playbook,从而开启你的自动化之旅。
122 36
|
9月前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible入门与实践
【9月更文挑战第28天】在追求高效、稳定的IT运维时代,自动化工具Ansible凭借其简洁性、易用性和强大的功能脱颖而出。本文旨在通过实际案例引导读者理解Ansible的核心概念和操作流程,并分享如何通过Ansible简化日常运维任务,提升工作效率。从基础安装到高级应用,我们将一步步揭开Ansible的神秘面纱,让初学者也能轻松掌握自动化运维的要诀。
|
9月前
|
运维 关系型数据库 MySQL
自动化运维工具:Ansible入门与实践
【9月更文挑战第23天】本文将带你进入自动化运维的世界,以Ansible为例,从基础概念到实际操作,让你轻松掌握自动化运维技能。我们将一起探索如何通过代码实现批量部署、配置管理和任务执行等功能,提高运维效率,减轻工作压力。让我们一起开启自动化运维之旅吧!
|
9月前
|
存储 运维 网络安全
自动化运维工具:Ansible入门与实践
【9月更文挑战第17天】本文将介绍Ansible的基本概念、安装和简单使用,以及如何编写一个简单的Ansible playbook。通过本文,您可以了解到Ansible的基本原理和使用方法,以及如何在实际工作中应用Ansible进行自动化运维。
|
9月前
|
运维 应用服务中间件 nginx
自动化运维的利器:Ansible入门与实践
【9月更文挑战第13天】在这个快速发展的IT时代,自动化运维已成为提升效率、减少失误的关键。本文将带你了解Ansible,一个强大的自动化工具,它简化了配置管理、应用部署和任务自动化。通过实际案例,我们将探索Ansible的基本概念、安装步骤、关键组件以及如何编写Playbook来自动化日常任务。无论你是新手还是有经验的运维专家,这篇文章都将为你提供宝贵的见解和技巧,让你在自动化运维的道路上更进一步。