ansible介绍

基础概念

ansible是个配置管理工具,可以批量处理一些任务。ansible只需要依赖ssh即可使用,而不需要在受管主机上安装客户端工具。

ansible具有幂等性,即以结果为导向。比如,当我们拉取文件到本地时,如果本地有该文件则不再拉取,如果本地没有该文件则拉取。

使用ansible需要满足两个基本条件:

  • ansible所在的主机可以通过ssh连接到受管主机;
  • 受管主机的信息已经添加到ansible的管理清单中。

安装配置

安装

首先使用pip可以安装ansible

sudo pip install ansible

安装方法有多种,可参考: https://ansible-tran.readthedocs.io/en/latest/docs/intro_installation.html

基于密码连接配置

ansible的管理清单文件是/etc/ansible/hosts

在该文件底部加上:

192.168.0.45 ansible_port=22 ansible_user=root ansible_ssh_pass=123456

ansible_port:端口号

ansible_user:用户名

ansible_ssh_pass:密码

然后就可以使用命令了,如ansible 192.168.0.45 -m ping

使用ip地址比较麻烦,我们可以为主机指定别名

test ansible_host=192.168.0.45 ansible_port=22 ansible_user=root ansible_ssh_pass=123456

然后就可以使用别名进行连接,ansible test -m ping

基于密钥连接配置

修改配置文件为

192.168.0.45 ansible_port=22

使用别名时改为

test ansible_host=192.168.0.45 ansible_port=22

当有多个密钥时可以使用ssh-agent进行管理,也可以在配置中通过ansible_ssh_private_key_file指定连接主机使用的密钥。

清单配置详解

INI格式

以上介绍的都是对一个主机执行命令,实际上可以对多台机器同时进行

ansible all -m ping

上面的命令是对配置文件中所有的机器执行ping命令,由此得到启发,对某一部分机器执行相同的命令,所以就需要对机器进行分组。

[A]
192.168.0.45
192.168.0.46 [B]
192.168.0.47

所以可以对某一个组内的机器执行同一个命令

ansible A -m ping

当ip地址连续时也可以采用如下方式

[A]
192.168.0.[45:46]

同样的,如果是域名中某个字母是连续的也可以采用类似的方式

[A]
suraer-a.book.net
suraer-b.book.net
[A]
suraer-[a:b].book.com

当组之间有包含关系时,还可以使用子组的方式,如下

[A]
192.168.0.45 [B]
192.168.0.46 [C:children]
[A]
[B]

等价于

[A]
192.168.0.45 [B]
192.168.0.46 [C]
192.168.0.45
192.168.0.46

YAML格式

# YAML格式
all:
hosts:
192.168.0.45
192.168.0.46 # 对应的INI配置
192.168.0.45
192.168.0.46

采用YAML格式有两个要注意的地方:

  • 各级之间采用一个空格递进,不能使用tab键
  • 分组需要用hosts关键字

下面举两个栗子说明YAML格式与INI格式之间的转换关系:

# INI格式
192.168.0.47 [A]
192.168.0.45 [B]
192.168.0.46 # YAML格式
all:
hosts:
192.168.0.47
children:
A:
hosts:
192.168.0.45
B:
hosts:
192.168.0.46
# INI格式
[A]
192.168.0.45 [B]
192.168.0.46 [C:children]
[A]
[B] # YAML格式
all:
children:
C:
children:
A:
hosts:
192.168.0.45
B:
hosts:
192.168.0.46

YAML格式同样可以使用别名,如下:

# INI格式
192.168.0.45
test ansible_host=192.168.0.46 ansible_port=22
192.168.0.47 # YAML格式
all:
hosts:
192.168.0.45
test:
ansible_host: 192.168.0.46
ansible_port: 22
192.168.0.47

注意,上面的冒号后面一定要有空格。

ansible模块

在前面的例子中,我们都是使用ping模块,实际上ansible有许多模块,可以使用如下命令查看那ansible有哪些模块:

ansible-doc -l

查看具体模块的详细使用方法,使用如下命令:

ansible-doc -s fetch

查看了命令就可以对照参数进行使用了,比如将A组中的所有主机的/etc/fstab文件拉取到本地:

ansible A -m fetch -a "src=/etc/fstab dest=/test/ansible"

上面命令-m表示使用那个模块,-a表示使用的参数,上面例子中使用了两个参数src和dest。

查看更多模块参考: http://docs.ansible.com/ansible/latest/modules_by_category.html

ansible基本使用的更多相关文章

  1. 如何利用ansible callback插件对执行结果进行解析

    最近在写一个批量巡检工具,利用ansible将脚本推到各个机器上执行,然后将执行的结果以json格式返回来. 如下所示: # ansible node2 -m script -a /root/pyth ...

  2. 《Ansible权威指南》笔记(2)——Inventory配置

    四.Inventory配置ansible通过Inventory来定义主机和组,使用时通过-i指定读取,默认/etc/ansible/hosts.可以存在多个Inventory,支持动态生成.1.定义主 ...

  3. useful Ansible commands

    This article includes some useful Ansible commands. I will try to write blogs by English. You may wa ...

  4. 《Ansible权威指南》笔记(4)——Playbook

    七.Playbook1.语法特性如下:(1)"---"首行顶格开始(2)#号注释(3)缩进统一,不同的缩进代表不同的级别,缩进要对齐,空格和tab不能混用(4)区别大小写,键值对k ...

  5. 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块

    五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options]    -v,--verbose  ...

  6. 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令

    2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...

  7. 自动化运维工具ansible部署以及使用

    测试环境master 192.168.16.74webserver1 192.168.16.70webserver2 192.168.16.72安装ansiblerpm -Uvh http://ftp ...

  8. Ansible Ubuntu 安装部署

    一.安装: $ sudo apt-get install ansible 二.配置: a.基本配置 $ cd /etc/ansible/ $ sudo cp hosts hosts_back 备份一个 ...

  9. Ansible 模块命令介绍

    copy模块: 目的:把主控端/root目录下的a.sh文件拷贝到到指定节点上 命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/' ...

  10. 用Vagrant和Ansible搭建持续交付平台

    这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...

随机推荐

  1. linux语言设置i18n(转)

    修改 /etc/sysconfig/i18n 文件,如 LANG="en_US.UTF-8",xwindow会显示英文界面, LANG="zh_CN.GB18030&qu ...

  2. I/O的方法、输入流和输出流

    1.文件常见方法 boolean flag=f.exists();   //文件是否存在 flag=f.isFile();     //是否是文件 flag=f.isDirectory(); //是否 ...

  3. Freemarker Failed at: ${itm.creatTimeString?string("yyyy-MM... [in template

    p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'; color: #454545} p.p2 {margin: ...

  4. ROS新版本Lunar Loggerhead

    参考链接: 1 http://wiki.ros.org/lunar 2 http://wiki.ros.org/lunar/Installation 3 http://docs.ros.org/ 4  ...

  5. shfileoperation 删除文件 FileDelete(CString strName)

    From:http://blog.csdn.net/lvwx369/article/details/41440883 注意:其中namePath 为全局变量 Cstring namePath; BOO ...

  6. Java [Leetcode 383]Ransom Note

    题目描述: Given
 an 
arbitrary
 ransom
 note
 string 
and 
another 
string 
containing 
letters from
 al ...

  7. bzoj 1226 学校食堂Dining

    Written with StackEdit. Description 小\(F\) 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜 ...

  8. SP104 HIGH - Highways

    vjudge luogu 题意 就是要你求无向图的生成树个数.\(n\le 12\),保证答案不爆\(long long\). sol 矩阵树定理直接上. 如果怕掉精可以写整数意义下的高斯消元,需要辗 ...

  9. LOJ10042 收集雪花

    题意 不同的雪花往往有不同的形状.在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们.一共有 n 个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状.在收集的过程中,同学们不希望有重 ...

  10. hadoop复合键排序使用方法

    在hadoop中处理复杂业务时,需要用到复合键,复合不同于单纯的继承Writable接口,而是继承了 WritableComparable<T>接口,而实际上,WritableCompar ...