Ansible命令执行方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible命令执行方式相关的知识,希望对你有一定的参考价值。

Ansible提供了多少个模块

#列出Ansible所有支持的模块
ansible-doc -l
#统计模块数
ansible-doc -l | wc -l
3387
#查看模块的具体用法
ansible-doc -s shell
ansible-doc -s ping

Ansible实现批量管理主机的模式主要有俩:

•利用Ansible命令实现批量管理(ad-hoc)模式

•利用Ansible剧本实现批量管理(playbook)模式

ad-hoc模式

Ansible的ad-hoc模式也就是Ansible的命令行模式,该模式下通常用来临时处理一些任务,例如:

•临时批量查看所有被管理主机的内存,负载,磁盘

•临时批量分发某个特定文件

Playbook模式

Ansible的Playbook模式就是针对特定的具体较大的任务,事先写好执行剧本,然后在其它机器上批量执行相同的任务,属于定制化的批量执行任务,例如:

•一键安装Rsync

•一键搭建LNMP集群等

Ansible核心内容(模块)

后续使用各种模块操作,会有不同的颜色结果

Ansible命令执行方式_Ansible模块

ping模块

#测试连通性,目标机器是否允许
ansible all -m ping

command简单命令模块

该模块作用:在远程节点上执行一个命令

command模块是Ansible命令基本模块,默认就是 -m command

•使用command模块执行远程命令,命令不得使用变量($HOME)

•不得出现特殊符号

< > | : &

否则无法识别,需要则使用shell模块实现

ansible-doc -s command
ansible 主机组 -m command -a "需要执行的命令"

#远程查看


Ansible系列命令用法详解与使用

Ansible系列命令用法与使用

    在上一个文章中已经完成了Ansible的安装,这片文章主要的用来记录Ansible一些命令的用法详解及其使用场景。好了非话不多说,‘上菜吧’。
    Ansible命令行执行方式有Ad-hoc、Ansible-playbook两种方式。Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于API开发类似的Web化产品。此篇文章主要针对于Ad-hoc、Ansible-playbook两种方式做详细介绍。
    什么是Ad-hoc、Ansible-playbook?Ad-hoc主要用于临时命令的执行,而Ansible-playbook可以简单理解为Ad-hoc的集合,通过一定的规则编排在一起。两者操作起来比较简单、方便易懂。
    以下为Ansible的部分命令:
  • ansible
  • ansible-galaxy
  • ansible-pull
  • ansib-doc
  • ansible-playbook
  • ansible-valut
  • ansible-console
    下面就是ansible、ansible-playbook、ansible-doc的详解及其使用
    1. Ansible Inventory配置及详解
      Inventory是Ansible管理主机信息的配置文件,存放于hosts文件中
      1. Inventory可以指定主机和组(如需端口直接在ip或者hostname后面+:port级即可)
        192.168.1.12 或者是hostname
        [haha]
        192.168.1.11
        192.168.1.10:8080

        [lala]
        web1
        pwd【1:10】(指pwd1、pwd2.....pwd10)

      1. 定义主机变量
        [webservers]
        web1 http-port=8080
      1. 定义组变量
        [heihei]
        192.168.1.11
        192.168.1.10:8080
        [hah:vars]
        ansible_ssh_root=‘root’
    2. Ansible与正则
      正则匹配:Ansible支持正则表达式,但是开头需要加上“~”才可以
    3. 1All全量匹配: ansible all -m -a ‘ping’ OR ansible “” -m -a ‘ping’ ansible 192.168.1. -m -a ‘ping’
    4. 2逻辑或(or)匹配:指的是同时对多组或者多台主机同时执行时,相互之间用“:(冒号)”分隔开:ansible web1:web2 -m ping
    5. 3逻辑非匹配:主要针对多重条件的匹配规则:(所有web组中的机器但是不在tom组中的主机):ansible web:!tom -m ping
    6. 4逻辑与的匹配:也是针对多重条件匹配的:(web跟tom组同时存在的主机):ansible web&tom -m ping
    7. 5多条件支持:在web和tom组中的所有机器存在于haha组中且在huhu组中不存在的主机:ansible web:tom&haha:!huhu
    8. 6模糊匹配: 所有以web开头的主机:^web*
    9. 7域切割:
      [WEB]
      Luna
      Liuli
      Webo
      WEB[0]:代表:Luna
      1. 正则匹配:Ansible支持正则表达式,但是开头需要加上“~”才可以
        Ansible “~(haha|huhu|yiyi)”.hehe.(com.org) -m ping
        检测haha.hehe.com.org、huhu.hehe.com、yiyi.hehe.com、haha.hehe.org、huhu.hehe.org、yiyi.hehe.org的存在***
    10. ansible-doc
      ansible-doc是Ansible模块文档说明,针对每个模块都会有详细的用法说明以及应用案例介绍,功能。类似于Linux系统的man命令,使用方式如下:
      ansible-doc [options] [module...]<br/>列出支出的模块:<br/>ansible-doc -l<br/>模块功能说明:<br/>ansible-doc ping`
    11. Ad-Hoc命令集介绍
      Ansible <host-pattern> [options]
      常用选项:
      -v,--verbose:输出更详细的执行过程信息
      -i PATH,--inventory=PATH:指定inventory信息
      -f NUM,--fork NUM:指定线程数
      --private-key=PRIVATE_KEY_FILE:指定秘钥文件
      -M DIRECTORY,--module-path=DIRECTORY:指定模块存放路径
      -a ’ARGUMECTORY’,--args=’ARGUMENTS’:模块参数
      -k,--ask-pass SSH:认证密码(通常在node机器上没有做过免秘钥的时候用)
      -K,--ask-sudo-pass sudo:用户密码(--sudo时用)
      -t DIRECTORY,--tree=DIRECTORY:输出信息至DIRECTORY目录下,结果文件以远程主机名命名
      -t SECONDS,--timeout=SECONDS:指定远程主机最大超时,单位是秒
      -u USERNAME,--username:指定远程主机以username运行命令
      -l SUBSET,--limit=SUBSET:指定运行主机
      -l ~REGEX:指定运行主机(正则)
      --list-hosts:列出符合条件的主机列表,不执行任何命令
      ansible和ansible-playbook默认会fork5个线程并发执行命令此时可使用-k num,根据自己主机硬件配置做调整,建议并发数是CPU的偶数倍
    12. Ansible的模块使用
      想要详细了解Ansible的模块信息通过ansible-doc [option] [module]即可
      例如ansible-doc -l:列出所有可用模块
      ansible-doc yum:获取yum模块的help信息
      命令行模块:command模块
      文件传输模块:copy模块、fetch模块、template模块
      Copy模块:复制本机文件到各节点上,可修改属猪、属组、权限(src=ansibefile dest=nodefile owner= greoup=groupname mode=777)
      copy模块还可以实现备份功能:ansible all -m copy -a ‘src=file dest=file.bak backup=yes’
      Fetch模块:复制节点文件传输到本机(仅支持传输文件,如果是个目录的话可以归档压缩后传输)
      Ansible all -m fetch -a ‘src=nodefile dest=ansiblefile backup=yes’
      ansible批量复制秘钥到各节点并实现免秘钥登录
      ansible all -m copy -a ‘src=/root/.ssh/id_rsa.pub dest=/home/’
      ansible all -m shell -a ‘cat /home/id_rsa.pub >> /root/.ssh/au

      command模块与shell模块的区别2
      Shell功能全面但是执行率低
      command不支持:逻辑运算符、条件判断符号、重定向命令或者是管道命令,但是使用shell模块的就不会报错
      cron模块
      ansible srvs -m cron -a ‘name="disk check loger" minute=15 hour=3 job="df -hT >> /tpm/df.log"
      Yum模块
      安装epel源:ansinle all -m yum -a ‘name=epel-release state=latest’
      安装应用:ansible all -m yum -a ‘name=vsftpd state=latest’
      Service模块
      Service模块中的state支持的选择有一下几种:started、stopped、restarted、reloaded
      Ansible all -m service -a ‘name=vsftpd state=stop’
      Setup模块
      自动从远程主机获取可用于playbook中的变量
      Ansible all -m setup -a ‘fileter=*distribut’ 或者是ansible all -m setup | grep -i distribut
      debug模块
      此处暂时不用省略
      Script模块
      Ansible all -m script -a ‘/home/test.sh’(在节点服务器上执行test.sh脚本)
    13. Ansible-playbook
      ansible-playbook是日常应用使用次数最多的,其工作机制是“读取预先编写好的playbook文件实现批量管理”,使用如下:
      ansible-playbook restartservice.yaml
      *** 1)、子串不一定要用双引号标识
      2)、在缩排中空白字符的数目并不重要,只要相同阶层的元素左对齐就OK了(yaml里面不可以使用Tab字符)
      3)、允许在文件中加入选择性的空行,以增加可读性;
      4)选择性的符号“...”可以用来表示档案结尾(在利用串流的通信中,这非常的有用,可以在选择不关闭串流的情况下发送结束信号)

以上是关于Ansible命令执行方式的主要内容,如果未能解决你的问题,请参考以下文章

Ansible之Playbook详解案例

ansible

ansible

ansible自动化运维详解ansible中playbook的编写使用执行命令及实例演示

ansible自动化运维详解ansible中playbook的编写使用执行命令及实例演示

ansible自动化运维详解ansible中playbook的编写使用执行命令及实例演示