Introduction To Ad-Hoc Commands:

来源:互联网 发布:im即时通讯源码 购买 编辑:程序博客网 时间:2024/05/29 02:05
Introduction To Ad-Hoc Commands:在下面的例子中,我们将演示如何使用 /usr/bin/ansible 运行 ad hoc 任务.所谓ad-hoc 命令是什么呢?(这其实是一个概念性的名字,是相对于写Ansible playbook 来说的.类似于在命令行敲入shell命令和写shell scripts两者之间的关系)如果我们敲入一些命令比较快的完成一些事情,而不需要将这些执行的命令特别保存下来,这样的命令就叫做ad-hoc命令:Ansible提供两种方式去完成任务,一是ad-hoc命令,一是写Andisble playbook前者可以解决一些简单的任务,后者解决较复杂的任务。Parallelism and Shell Commands并行和shell命令:这里我们要使用Ansible的命令行工具来重启Atlanta组中所有的web服务器,每次重启10个:  -u REMOTE_USER, --user=REMOTE_USER                        connect as this user (default=root)[root@node01 ~]# ansible webservers -a hostname192.168.137.3 | SUCCESS | rc=0 >>node2[root@node01 ~]# ansible webservers -a hostname -u root192.168.137.3 | SUCCESS | rc=0 >>node2[root@node01 ~]# ansible webservers -a hostname -u mqm192.168.137.3 | UNREACHABLE! => {    "changed": false,     "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",     "unreachable": true}在前面写出的命令中, -f 10 选项表示使用10个并行的进程。这个选项可以在 Ansible的配置文件 中设置,在配置文件中指定的话,就不用在命令行中写出了。ansible 有许多模块默认是'command',也就是命令模块,我们可以通过-m选项来指定不同的模块。在前面所示的例子中,因为我们是要在Atlanta组下的服务器中执行reboot命令command 模块不支持shell变量,也不支持管道等shell相关的东西。如果你想使用shell相关的这些东西,请使用'shell'模块,两个模块之前的差别请参考Fiel Transfer:这是/usr/bin/ansible的另一种用法,Ansible能够以并行的方式同时SCP大量的文件到多台机器$ ansible atlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts"[root@node01 ~]# ansible webservers -m copy -a "src=/etc/hosts dest=/tmp/hosts"192.168.137.3 | SUCCESS => {    "changed": true,     "checksum": "a3d4bc64e2b269bffe14ec2e19308541b1d8d183",     "dest": "/tmp/hosts",     "failed": false,     "gid": 0,     "group": "root",     "md5sum": "b269d2b01e6746e5310b7f7d5e699735",     "mode": "0644",     "owner": "root",     "size": 181,     "src": "/root/.ansible/tmp/ansible-tmp-1510552624.24-224464626846698/source",     "state": "file",     "uid": 0}此时的权限为root:root:node2:/root#ls -ltr /tmp/total 16drwx------ 3 root root 4096 Oct  9 01:15 par-726f6f74lrwxrwxrwx 1 root root   24 Nov 13 00:39 mysql.sock -> /data01/mysql/mysql.sock-rw-r--r-- 1 root root   11 Dec  4 00:18 hello.worlddrwx------ 2 root root 4096 Dec  6 05:51 pip-EHe6bt-unpack-rw-r--r-- 1 root root  181 Dec  9 18:35 hosts使用file 模块可以做到修改文件的属主和权限(在这里是可替换为copy模块,是等效的):[root@node01 ~]# ansible webservers -m file -a "src=/etc/hosts dest=/tmp/hosts mode=600"192.168.137.3 | SUCCESS => {    "changed": true,     "failed": false,     "gid": 0,     "group": "root",     "mode": "0600",     "owner": "root",     "path": "/tmp/hosts",     "size": 181,     "state": "file",     "uid": 0}node2:/root#ls -ltr /tmp/total 16drwx------ 3 root root 4096 Oct  9 01:15 par-726f6f74lrwxrwxrwx 1 root root   24 Nov 13 00:39 mysql.sock -> /data01/mysql/mysql.sock-rw-r--r-- 1 root root   11 Dec  4 00:18 hello.worlddrwx------ 2 root root 4096 Dec  6 05:51 pip-EHe6bt-unpack-rw------- 1 root root  181 Dec  9 18:35 hostsYou have mail in /var/spool/mail/root[root@node01 ~]# ansible webservers -m file -a "src=/etc/hosts dest=/tmp/hosts mode=700 owner=mqm group=mqm"192.168.137.3 | SUCCESS => {    "changed": true,     "failed": false,     "gid": 500,     "group": "mqm",     "mode": "0700",     "owner": "mqm",     "path": "/tmp/hosts",     "size": 181,     "state": "file",     "uid": 500}使用file模块也可以创建目录,于执行mkdir -p 效果类似:$ ansible webservers -m file -a "dest=/tmp/tlcb mode=755 owner=mqm group=mqm state=directory"[root@node01 ~]# ansible webservers -m file -a "dest=/tmp/tlcb mode=755 owner=mqm group=mqm state=directory"192.168.137.3 | SUCCESS => {    "changed": true,     "failed": false,     "gid": 500,     "group": "mqm",     "mode": "0755",     "owner": "mqm",     "path": "/tmp/tlcb",     "size": 4096,     "state": "directory",     "uid": 500}管理包:确认一个软件包已经安装,但不去升级它:[root@node01 ~]# ansible webservers -m yum -a "name=acme state=present"192.168.137.3 | FAILED! => {    "changed": false,     "failed": true,     "msg": "python2 bindings for rpm are needed for this module. python2 yum module is needed for this  module"}[root@node01 ~]# ansible webservers -m yum -a "name=acme state=absent"192.168.137.3 | FAILED! => {    "changed": false,     "failed": true,     "msg": "python2 bindings for rpm are needed for this module. python2 yum module is needed for this  module"}115.236.19.4 | SUCCESS => {    "changed": false,     "failed": false,     "msg": "",     "rc": 0,     "results": [        "acme is not installed"    ]}

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 亚克力烤漆 烤漆加工厂 烤漆橱柜厂家 亚克力 烤漆 烤漆多少钱 钢板烤漆 木质烤漆 手机烤漆 橱柜烤漆价格 高光烤漆 烤漆护栏 烤漆方法 烤漆墙板 车身烤漆 烤漆产品 烤漆相框 烤漆字 金属板烤漆 烤漆展柜多少钱一米 实木门烤漆 五金烤漆 刷油漆多少钱一平方 印尼火烤华人女记者吃肉 火烤活人 烤面包烤箱上下火温度多少 烤火费发放标准2018 烤火费 电烤火桌 火烤冰激凌 不锈钢烤火桌 烤蛋挞的温度上下火 微波炉烤披萨用什么火 用火烤竹筒饭怎么封口 微波炉烤红薯用什么火 烤火茶几哪个品牌好 烤火被罩 微波炉烤面包用什么火 烤火图片 烤火 烤炉 烤炉图片