• Ansible学习 ad-hoc命令


      Ansible提供两种方式去执行命令,一种是ad-hoc命令,一种是写入Ansible playbook。类似于前者在命令行敲shell,后者是写shell-script脚本,前者解决一些简单的任务,后者执行较复杂的任务。

      ad-hoc命令格式:ansible <pattern_goes_here> -m <module_name> -a <arguments>

    pattern_goes_here:被管理的目标主机

    module_name:使用的模块名,ansible中有多个模块,默认为command模块

    arguments:模块参数

      在管理主机上执行ansible-doc -l,可以查看当前可以使用的所有模块;执行ansible-doc <module_name>,可以得到该模块的帮助文档

    1、command模块为默认的模块,可以执行一些命令来执行简单的任务

    现在执行如下命令,列出test组中所有主机的/etc/passwd文件,-f设置并行执行的客户端个数,实例中每次并行执行2个主机,在ansible.cfg中对-f有默认配置个数

    [root@client01 ansible]# ansible test -a "ls -l /etc/passwd" -f 2
    192.168.144.129 | SUCCESS | rc=0 >>
    -rw-r--r--. 1 root root 2238 Jan 7 2017 /etc/passwd
    192.168.144.130 | SUCCESS | rc=0 >>
    -rw-r--r--. 1 root root 2238 Jan 7 2017 /etc/passwd

    command 模块不支持 shell 变量,也不支持管道等 shell 相关的东西.如果你想使用 shell相关的这些东西, 要使用’shell’ 模块

    在使用shell模块时,要注意使用引号规则,下面这个例子中,希望得到被管理主机的变量名,使用双引号得到的却是当前管理主机系统的变量,若要反馈被管理主机的系统变量,要用单引号

    [root@client01 log]# ansible test1 -m shell -a "echo $HOSTNAME"
    192.168.144.129 | SUCCESS | rc=0 >>
    client01

    [root@client01 log]# ansible test1 -m shell -a 'echo $HOSTNAME'
    192.168.144.129 | SUCCESS | rc=0 >>
    client03

    2、文件传输

    Ansible 能够以并行的方式同时 SCP 大量的文件到多台机器,使用copy模块

    [root@client01 ansible]# ansible 192.168.144.130 -m copy -a "src=/etc/passwd dest=/tmp/"
    192.168.144.130 | SUCCESS => {
    "changed": true,
    "checksum": "60f009c54c884e9e761ea571974eeea3b1182465",
    "dest": "/tmp/passwd",
    "failed": false,
    "gid": 0,
    "group": "root",
    "md5sum": "82ef84d58047cb303e91d22a1ba4ed69",
    "mode": "0644",
    "owner": "root",
    "secontext": "unconfined_u:object_r:admin_home_t:s0",
    "size": 2238,
    "src": "/root/.ansible/tmp/ansible-tmp-1515069024.7-268861670275734/source",
    "state": "file",
    "uid": 0
    }
    [root@client01 ansible]#
    [root@client01 ansible]# ansible 192.168.144.130 -m command -a "ls -l /tmp/passwd"
    192.168.144.130 | SUCCESS | rc=0 >>
    -rw-r--r--. 1 root root 2238 Jan 4 20:30 /tmp/passwd
    [root@client01 ansible]#

    3、service模块,管理远程主机上的服务

    [root@client01 ansible]# ansible test1 -m service -a "name=sshd state=started"

    4、script模块,将参数中的脚本传到远程主机上,并在远程主机的shell环境下执行,该模块的执行不依赖远程主机的python环境

    [root@client01 ansible]# ansible all -i hosts -m script -a "/home/zhuwan/ansible/test.sh arg1" 

  • 相关阅读:
    SAP中主数据和单据的删除
    如何在kubernetes中使用Spring Cloud微服务
    认识AngularJs
    最全面的水平居中方案跟flexbox布局
    浅谈背景图片的填充
    Html、Css、JavaScript、Dom细节总结
    innerText跟innerHtml的区别
    解决悬浮的<header>、<footer>遮挡内容的处理技巧
    怎样发布NodeJs项目
    安装grunt
  • 原文地址:https://www.cnblogs.com/pigwan7/p/8192577.html
Copyright © 2020-2023  润新知