Ansible常用命令详解

本文详细介绍了Ansible的常用命令,包括列举主机列表、host-pattern的各种匹配方式,如全量、逻辑或、逻辑与、逻辑非及正则表达式匹配。还提及了ansible-doc、ansible-playbook、ansible-vault等高级功能,以及ansible执行过程和执行状态的说明。此外,还涵盖了ansible-galaxy的角色下载和ansible-console的虚拟终端操作。

1. ansible

1.1 举例

(1)列出所有主机列表

(2)检测websrvs组是否存活

1.2 ansible的host-pattern

(1)全量(all)匹配

(2)逻辑或(or)匹配

(3)逻辑与(&)匹配

(4)逻辑非(!)匹配

(5)综合逻辑

(6)域切割

(7)正则表达式

1.3 ansible命令执行过程

2.ansible-doc

3.ansible-playbook

4.ansible-vault

5.ansible-galaxy

6.ansible-pull

7.ansible-console

7.1 进入虚拟终端

7.2 虚拟终端常用命令


1. ansible

ansible通过SSH实现配置管理、应用部署、任务执行等功能,配置ansible端基于密钥认证的方式联系各被管理节点,用于执行临时性的工作。

用法:ansible <host-pattern> [options]

[options]选项

意义

-a ‘args’

模块参数

--version

显示版本

-m MODULE_NAME

指定模块,默认为command

-v

详细过程,-vv,-vvv更详细

-s

相当于linux下的sudo命令

--list-hosts

显示主机列表,可简写--list

-k

提示输入SSH连接密码,默认Key验证

-K

提示输入sudo时的口令

-C

检查,并不执行

-T

执行命令的超时时间

-u REMOTE_USER

执行远程执行的用户

-b

代替旧版的sudo切换

-f

并发线程数,默认5

1.1 举例

(1)列出所有主机列表

[root@CentOS7 ~]# ansible all --list-hosts

(2)检测websrvs组是否存活

[root@CentOS7 ~]# ansible websrvs -m ping

1.2 ansible的host-pattern

(1)全量(all)匹配

[root@CentOS7 ~]# ansible all -m ping   #匹配所有主机,all与*号功能相同。如检测所有主机存活情况
[root@CentOS7 ~]# ansible "*" -m ping   #匹配所有主机,all与*号功能相同。如检测所有主机存活情况
[root@CentOS7 ~]# ansible 192.168.73.* -m ping   #检查192.168.73.0/24网段所有主机存活情况

(2)逻辑或(:)匹配

用“:”冒号表示同时对多台主机或多个组同时执行。

[root@CentOS7 ~]# ansible "websrvs:dbsrvs" -m ping

(3)逻辑与(:&)匹配

主要针对多重条件的复杂组合。

[root@CentOS7 ~]# ansible 'websrvs:&dbsrvs' -m ping      #在websrvs组和dbsrvs组同时存在的所有主机

(4)逻辑非(:!)匹配

主要针对多重条件的匹配规则。

[root@CentOS7 ~]# ansible 'websrvs:!dbsrvs' -m ping     #在websrvs组但不在dbsrvs组的所有主机

(5)综合逻辑

支持多条件的复杂组合

[root@CentOS7 ~]# ansible 'websrvs:dbsrvs:&appsrvs:!ftpsrvs' -m ping        #在websrvs组和dbsrvs两个组中的所有主机在appsrvs组中存在且在ftpsrvs组中不存在的主机

(6)域切割

ansible底层基于Python,因此也支持切割。如:

[websrvs]
alpha.example.org
beta.example.org
192.168.1.100
192.168.1.110

websrvs[0]         #==alpha.example.org
websrvs[0:1]       #==alpha.example.org,beta.example.org

(7)正则表达式

ansible支持完整正则匹配,“~表示”开始正则匹配。

[root@CentOS7 ~]# ansible "~(web|db)srvs" -m ping       #检测websrvs、dbsrvs的存活情况

1.3 ansible命令执行过程

  • 加载自己的配置文件
  • 加载自己对应的模块文件,如command
  • 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.py文件
  • 给文件+x执行
  • 执行并返回结果
  • 删除临时py文件,sleep 0退出

1.4 Ansible执行状态

  • 绿色:执行成功并且不需要做出任何改变
  • 黄色:执行成功并且对目标主机做出变更
  • 红色:执行失败
  • 蓝色:显示详细过程
  • 紫色:显示警告

2.ansible-doc

ansible模块的文档说明。针对每个模块,都有详细的说明

用法:ansible-doc [options] [module]

OPTIONS描述
-a显示所有模块的文档
-l,--list列出可用模块
-s显示指定模块的playbook片段
[root@CentOS7 ~]# ansible-doc -l | wc -l     #统计Ansible模块的数量        
1378
[root@CentOS7 ~]# ansible-doc -s script      #查看script模块的帮助文档
- name: Runs a local script on a remote node after transferring it
  script:
      chdir:                 # cd into this directory on the remote node before
                               running the script
      creates:               # a filename, when it already exists, this step will
                               *not* be run.
      decrypt:               # This option controls the autodecryption of source files
                               using vault.
      free_form:             # (required) Path to the local script file followed by
                               optional arguments.
                               There is no parameter
                               actually named 'free
                               form'; see the examples!
      removes:               # a filename, when it does not exist, this step will
                               *not* be run.

3.ansible-playbook

通过读取预先编写好的playbook文件实现批量管理。要实现的功能与命令ansible一样,相当于按一定条件组成的ansible任务集

用法:ansible-playbook [options] playbook.yml

[root@CentOS7 ~]# vim hello.yml
---
- hosts: all
  remote_user: root

  tasks:
    - name: hello
      command: hostname


#执行playbook剧本
[root@CentOS7 ~]# ansible-playbook hello.yml 
PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [192.168.146.122]
ok: [192.168.146.112]
ok: [192.168.146.111]

TASK [hello] *******************************************************************
changed: [192.168.146.112]
changed: [192.168.146.122]
changed: [192.168.146.111]

PLAY RECAP *********************************************************************
192.168.146.111            : ok=2    changed=1    unreachable=0    failed=0   
192.168.146.112            : ok=2    changed=1    unreachable=0    failed=0   
192.168.146.122            : ok=2    changed=1    unreachable=0    failed=0  

4.ansible-vault

主要用于配置文件管理(加密解密),如编写的playbook配置文件中包含敏感信息,不希望其他人随意查看。

用法:ansible-vault [create|decrypt|edit|encrypt|encrypt_string|rekey|view] [options] [vaultfile.yml]

ansible-vault encrypt vaultfile.yml:加密playbook文件
ansible-vault decrypt vaultfile.yml:解密playbook文件
ansible-vault view vaultfile.yml:查看加密文件
ansible-vault edit vaultfile.yml:编辑加密文件
ansible-vault create vaultfile.yml:创建新playbook文件
ansible-vault rekey vaultfile.yml:修改口令

5.ansible-galaxy

连接https://galaxy.ansible.com下载相应的roles

用法:ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...

ansible-galaxy list:列出所有已安装的galaxy
ansible-galaxy install geerlingguy.nginx:安装galaxy
ansible-galaxy delete geerlingguy.nginx:删除galaxy

6.ansible-pull

推送命令至远程,效率无限提升

7.ansible-console

ansible-console是ansible为用户提供的一款交互式工具,用户可以在ansible-console虚拟出来的终端上向shell一样使用ansible内置的各种命令。

7.1 进入虚拟终端

root@all (3)[f:5]$

执行用户@当前操作的主机组(当前组的数量)[f:并发数]$

7.2 虚拟终端常用命令

列出当前组主机列表:list
切换组/主机:cd 主机组/主机
设置并发数:forks n
列出所有内置命令:?或help
退出虚拟终端:exit

root@all (3)[f:5]$ shell echo $HOSTNAME
192.168.146.111 | SUCCESS | rc=0 >>
s1

192.168.146.122 | SUCCESS | rc=0 >>
Client

192.168.146.112 | SUCCESS | rc=0 >>
Server2

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值