Ansible的安装和命令的介绍

安装

ansible管理机可以装在任何的操作系统上,除了windows。下面介绍在centos7上安装ansible。

最简单的安装方式,yum安装:

yum install ansible

配置

ansbile默认的配置文件路径为 /etc/ansible

ansible.cfg 配置文件,这个配置文件默认就好了。如果有需求可以根据自己的需求去修改

#inventory      = /etc/ansible/hosts  #默认存放可通讯主机的目录文件
#library        = /usr/share/my_modules/ #默认搜寻模块位置
#module_utils   = /usr/share/my_module_utils/  
#remote_tmp     = ~/.ansible/tmp #远端的临时目录
#local_tmp      = ~/.ansible/tmp
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
#forks          = 5 #在与主机通信时的默认并行进程数,默认并发是5
#poll_interval  = 15
#sudo_user      = root
#ask_sudo_pass = True
#ask_pass      = True
#transport      = smart
#remote_port    = 22 #远程SSH端口,默认是22
#module_lang    = C #模块和系统之间通信的计算机语言,默认是C语言
#module_set_locale = False

备注:其他参数设置 可以参考ansible的中文文档。中文文档地址

 

hosts 主机清单文件

Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置. 默认的文件路径为 /etc/ansible/hosts

[zabbix_agentd_servers]
172.30.47.203  # op01
172.30.47.201  # op02
172.30.47.202  # proxy01
172.30.47.101  # asrtest01

[lvs_servers]
172.30.47.141
172.30.47.142

[test]
172.17.30.102
[test:vars]
ansible_ssh_port=9022

中括号[] 里面是主机名,用于对系统进行分类。为了方便不通的系统管理,可以设定多个分组,用中括号区分即可。如果端口非默认端口,要单独增加一个变量,例如上面的test组。

主机除了是ip地址,也可以写成是别名或者是主机名的方式。

[test]
test.sunqfrs.com:9022

不过,你需要在hosts里面做好主机 与 别名的对应关系。

如果端口不是默认的端口直接在后面加上端口号,用冒号分割即可。

 

公钥认证

如果你的管理机和被管理机之间没有做公钥认证的话,每次执行ansibie命令 都要输入被管理机器的ssh登录密码

下面在管理机上生成一个公钥,然后分发的其他的机器上去:

[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):             #选择保存的位置。 回车默认
Created directory '/root/.ssh'.
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:
ad:cb:d7:c0:e6:1c:fe:5c:d4:d4:34:f1:a1:91:36:20 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|         E ....+o|
|         .  +o.=|
|           ... +|
|         .     o |
|       S..   . .|
|         .= .   |
|       .= + . |
|       . .=...   |
|       o. .o   |
+-----------------+


3.然后 执行
[root@localhost ~]# ssh-copy-id .ssh/id_rsa.pub [email protected]   #拷贝公钥到另外一台电脑去
                   

#如果端口非22采用以下方式
[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub '-p 9822 [email protected] '

#主机登录其他两台就不需要密码登录了。
[root@localhost ~]# ssh [email protected]   #测试直接登录

 

ansible 命令

安装完之后,发现ansible一共为我们提供了7个命令: ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault

我们日常用的最多的两个命令是:ansible 和 ansible-playbook

ansible

格式: ansible <host-pattern> [options]

可用选项:

-v, --verbose   输出更详细的执行过程

-i 指定inventory 信息,默认是用/etc/ansible/hosts
-l 选择指定的组
-f FORKS, --forks=FORKS 并发线程数,默认是5个线程
--private-key=PRIVATE_KEY_FILE: 指定密钥文件。
-m NAME, --module-name=NAME:     指定执行使用的模块。

还有其他很多参数,详情请看 ansible --help

执行:

[root@localhost ~]# ansible all -m shell -a "w"
192.168.137.102 | SUCCESS | rc=0 >>
14:51:11 up 37 min,  2 users, load average: 0.00, 0.01, 0.05
USER     TTY     FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.137.1    14:22   27:59   0.01s  0.01s -bash
root     pts/1    192.168.137.101  14:51    0.00s  0.14s  0.05s w

 

ansible-doc

ansible-doc 命令常用于获取模块信息及其使用帮助,一般用法如下

ansible-doc -l   #获取全部模块信息
ansible-doc -s 模块名字 #获取指定模块的使用帮助。

例子:
ansible-doc -s shell #获取shell 模块的帮助信息
ansible-lint

ansible-lint是对playbook的语法进行检查的一个工具。用法是ansible-lint playbook.yml 。

 

ansible-playbook

该指令是使用最多的指令,其通过读取playbook 文件后,执行相应的动作,这个后面会做为一个重点来讲。

 

备注:其他命令我用得比较少,如果需要用到的话,可以使用--help 查询。

 

 

猜你喜欢

转载自www.cnblogs.com/zyos/p/10154934.html