您的位置 首页 > 德语词汇

adhoc是什么意思?用法、例句(Ansible入门---ad hoc命令)

其实adhoc是什么意思?用法、例句的问题并不复杂,但是又很多的朋友都不太了解Ansible入门---ad hoc命令,因此呢,今天小编就来为大家分享adhoc是什么意思?用法、例句的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

下面的例子中,我们将演示如何使用/usr/bin/ansible运行adhoc任务.

adhoc是什么意思?用法、例句(Ansible入门---ad hoc命令)

ad-hoc命令其实是一个概念性的名字,是相对于写Ansibleplaybook来说的.类似于在命令行敲入shell命令和写shellscripts两者之间的关系

如果我们敲入一些命令去比较快的完成一些事情,而不需要将这些执行的命令特别保存下来,这样的命令就叫做ad-hoc命令.

Ansible提供两种方式去完成任务,一是ad-hoc命令,一是写Ansibleplaybook.前者可以解决一些简单的任务,后者解决较复杂的任务.在学习了playbooks之后,你才能体会到Ansible真正的强大之处在哪里.

2.简单例子【执行命令】

(1)密钥管理

先设置SSH-agent,将私钥纳入其管理:

[root@centos1ansible]#ssh-agentbash\n[root@centos1ansible]#ssh-add~/.ssh/id_rsa\nIdentityadded:/root/.ssh/id_rsa(/root/.ssh/id_rsa)\n

【注释】ssh-agent是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管。

如果本机A可以通过秘钥免密码登录B,C两个服务器,但B,C无法免密码登录,那么如果在A机器,执行这两条命令,把A机器秘钥交给ssh-agent管理,那么从A登录B用

ssh-Aroot@B,在B机器的/tmp目录下就会看到/tmp/ssh-xxxxxxxxx/agent.xxxxx类似这种形式的文件生成,然后你就可以在B机器免密码登录C机器了。

如果你登录C机器的时候也带了-A这个参数,那么你还可以从C机器免密码登录另一台可以从A机器免密码直接登录的机器。

确保主机文件中有要控制的机器:

[root@centos1ansible]#cat/etc/ansible/hosts\n[webservers]\n192.168.87.137\n192.168.87.128\n

现在执行如下命令,这个命令中,webservers是一个组,这个组里面有很多服务器,”/bin/touch”命令会在webservers组下的所有机器上执行.这里ssh-agent会fork出10个子进程(bash),以并行的方式执行touch命令.即是以这种方式实现:

[root@centos1ansible]#ansiblewebservers-a"/bin/touch/tmp/test.txt"-f2\n192.168.87.137|UNREACHABLE!=>{\n"changed":false,\n"msg":"Failedtoconnecttothehostviassh:ssh:connecttohost192.168.87.137port22:Noroutetohost",\n"unreachable":true\n}\n[WARNING]:Considerusingthefilemodulewithstate=touchratherthanrunning'touch'.Ifyouneedtousecommand\nbecausefileisinsufficientyoucanadd'warn:false'tothiscommandtaskorset'command_warnings=False'in\nansible.cfgtogetridofthismessage.\n192.168.87.128|CHANGED|rc=0>>\n

可以再次执行一遍:

[root@centos1ansible]#ansiblewebservers-a"/bin/touch/tmp/test.txt"-f2\n[WARNING]:Considerusingthefilemodulewithstate=touchratherthanrunning'touch'.Ifyouneedtousecommand\nbecausefileisinsufficientyoucanadd'warn:false'tothiscommandtaskorset'command_warnings=False'in\nansible.cfgtogetridofthismessage.\n192.168.87.128|CHANGED|rc=0>>\n192.168.87.137|CHANGED|rc=0>>\n

(3)指定用户

在执行/usr/bin/ansible时,默认是以当前用户的身份去执行这个命令.如果想以指定的用户执行ansible,请添加“-uusername”选项,如下:

ansiblewebservers-a"/usr/bin/touch/tmp/test.txt"-f2-umqm\n

在前面写出的命令中,-f10选项表示使用10个并行的进程.这个选项也可以在Ansible的配置文件中设置,在配置文件中指定的话,就不用在命令行中写出了.这个选项的默认值是5,是比较小的.如果同时操作的主机数比较多的话,可以调整到一个更大的值,只要不超出你系统的承受范围就没问题.如果主机数大于设置的并发进程数,Ansible会自行协调,花得时间会更长一点.

ansible有许多模块,默认是‘command’,也就是命令模块,我们可以通过-m选项来指定不同的模块。

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

ansibleraleigh-mshell-a'echo$TERM'\n

使用Ansibleadhoc命令行接口时(与使用Playbooks的情况相反),尤其注意shell引号的规则.比如在上面的例子中,如果使用双引号”echo$TERM”,会求出TERM变量在当前系统的值,而我们实际希望的是把这个命令传递到其它机器执行.

Ansible能够以并行的方式同时SCP大量的文件到多台机器.命令如下:

[root@centos1~]#ansiblewebservers-mcopy-a"src=/etc/hostsdest=/tmp/hosts.copyed"\n192.168.87.137|UNREACHABLE!=>{\n"changed":false,\n"msg":"Failedtoconnecttothehostviassh:ssh:connecttohost192.168.87.137port22:Noroutetohost",\n"unreachable":true\n}\n192.168.87.128|CHANGED=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":true,\n"checksum":"c130cddb98e004d6099a1d4610aa5b179f944752",\n"dest":"/tmp/hosts.copyed",\n"gid":0,\n"group":"root",\n"md5sum":"333b0507250f501e03bf42bb63f63ea6",\n"mode":"0644",\n"owner":"root",\n"secontext":"unconfined_u:object_r:admin_home_t:s0",\n"size":226,\n"src":"/root/.ansible/tmp/ansible-tmp-1558667934.28-254713374961885/source",\n"state":"file",\n"uid":0\n}\n[root@centos1~]#ansiblewebservers-mcopy-a"src=/etc/hostsdest=/tmp/hosts.copyed"\n192.168.87.137|CHANGED=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":true,\n"checksum":"c130cddb98e004d6099a1d4610aa5b179f944752",\n"dest":"/tmp/hosts.copyed",\n"gid":0,\n"group":"root",\n"md5sum":"333b0507250f501e03bf42bb63f63ea6",\n"mode":"0644",\n"owner":"root",\n"secontext":"unconfined_u:object_r:admin_home_t:s0",\n"size":226,\n"src":"/root/.ansible/tmp/ansible-tmp-1558668170.29-139809620689423/source",\n"state":"file",\n"uid":0\n}\n192.168.87.128|SUCCESS=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":false,\n"checksum":"c130cddb98e004d6099a1d4610aa5b179f944752",\n"dest":"/tmp/hosts.copyed",\n"gid":0,\n"group":"root",\n"mode":"0644",\n"owner":"root",\n"path":"/tmp/hosts.copyed",\n"secontext":"unconfined_u:object_r:admin_home_t:s0",\n"size":226,\n"state":"file",\n"uid":0\n}\n

4.file模块

使用file模块可以做到修改文件的属主和权限

[root@centos1~]#ansiblewebservers-mfile-a"dest=/tmp/hosts.copyedmode=600"\n192.168.87.137|SUCCESS=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":false,\n"gid":0,\n"group":"root",\n"mode":"0600",\n"owner":"root",\n"path":"/tmp/hosts.copyed",\n"secontext":"unconfined_u:object_r:admin_home_t:s0",\n"size":226,\n"state":"file",\n"uid":0\n}\n192.168.87.128|CHANGED=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":true,\n"gid":0,\n"group":"root",\n"mode":"0600",\n"owner":"root",\n"path":"/tmp/hosts.copyed",\n"secontext":"unconfined_u:object_r:admin_home_t:s0",\n"size":226,\n"state":"file",\n"uid":0\n}\n

(2)创建目录

[root@centos1~]#ansiblewebservers-mfile-a"dest=/path/to/createmode=755owner=mqmgroup=mqmstate=directory"\n192.168.87.137|FAILED!=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":false,\n"gid":0,\n"group":"root",\n"mode":"0755",\n"msg":"chownfailed:failedtolookupusermqm",\n"owner":"root",\n"path":"/path",\n"secontext":"unconfined_u:object_r:default_t:s0",\n"size":6,\n"state":"directory",\n"uid":0\n}\n192.168.87.128|CHANGED=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":true,\n"gid":501,\n"group":"mqm",\n"mode":"0755",\n"owner":"mqm",\n"path":"/path/to/create",\n"secontext":"unconfined_u:object_r:default_t:s0",\n"size":4096,\n"state":"directory",\n"uid":496\n}\n

(3)删除目录

[root@centos1~]#ansiblewebservers-mfile-a"dest=/path/to/createstate=absent"\n192.168.87.137|SUCCESS=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":false,\n"path":"/path/to/create",\n"state":"absent"\n}\n192.168.87.128|CHANGED=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":true,\n"path":"/path/to/create",\n"state":"absent"\n}\n

【注释】上面创建目录的时候137是创建失败的,所以此处的SUCCESS只是命令执行成功了,但没有任何改变(CHANGED)。

Ansible提供对yum和apt的支持.这里是关于yum的示例.

[root@centos1~]#ansiblewebservers-myum-a"name=gccstate=present"\n192.168.87.137|SUCCESS=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":false,\n"msg":"",\n"rc":0,\n"results":[\n"gcc-4.8.5-36.el7.x86_64providinggccisalreadyinstalled"\n]\n}\n192.168.87.128|SUCCESS=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":false,\n"msg":"",\n"rc":0,\n"results":[\n"gcc-4.4.7-4.el6.x86_64providinggccisalreadyinstalled"\n]\n}\n

(2)卸载软件包

ansiblewebservers-myum-a"name=gccstate=absent"\n

6.user模块

[root@centos1~]#ansiblewebservers-muser-a"name=newuserpassword=newuser"\n192.168.87.137|UNREACHABLE!=>{\n"changed":false,\n"msg":"Failedtoconnecttothehostviassh:ssh:connecttohost192.168.87.137port22:Connectiontimedout",\n"unreachable":true\n}\n[WARNING]:Theinputpasswordappearsnottohavebeenhashed.The'password'argumentmustbeencryptedforthis\nmoduletoworkproperly.\n192.168.87.128|CHANGED=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"append":false,\n"changed":true,\n"comment":"",\n"group":503,\n"home":"/home/********",\n"move_home":false,\n"name":"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",\n"password":"NOT_LOGGING_PASSWORD",\n"shell":"/bin/bash",\n"state":"present",\n"uid":502\n}\n[root@centos1~]#ansiblewebservers-muser-a"name=newuserpassword=newuser"\n[WARNING]:Theinputpasswordappearsnottohavebeenhashed.The'password'argumentmustbeencryptedforthis\nmoduletoworkproperly.\n192.168.87.137|CHANGED=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":true,\n"comment":"",\n"create_home":true,\n"group":1001,\n"home":"/home/********",\n"name":"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",\n"password":"NOT_LOGGING_PASSWORD",\n"shell":"/bin/bash",\n"state":"present",\n"system":false,\n"uid":1001\n}\n192.168.87.128|SUCCESS=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"append":false,\n"changed":false,\n"comment":"",\n"group":503,\n"home":"/home/********",\n"move_home":false,\n"name":"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",\n"password":"NOT_LOGGING_PASSWORD",\n"shell":"/bin/bash",\n"state":"present",\n"uid":502\n}\n[root@centos1~]#\n

(2)删除用户:

[root@centos1~]#ansiblewebservers-muser-a"name=newuserstate=absent"\n192.168.87.137|CHANGED=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":true,\n"force":false,\n"name":"newuser",\n"remove":false,\n"state":"absent"\n}\n192.168.87.128|CHANGED=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":true,\n"force":false,\n"name":"newuser",\n"remove":false,\n"state":"absent"\n}\n

7.service模块

[root@centos1~]#ansiblewebservers-mservice-a"name=sshdstate=started"\n192.168.87.128|SUCCESS=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":false,\n"name":"sshd",\n"state":"started"\n}\n192.168.87.137|SUCCESS=>{\n"ansible_facts":{\n"discovered_interpreter_python":"/usr/bin/python"\n},\n"changed":false,\n"name":"sshd",\n"state":"started",\n"status":{\n"ActiveEnterTimestamp":"Fri2019-05-2411:19:50CST",\n"ActiveEnterTimestampMonotonic":"47607327",\n"ActiveExitTimestampMonotonic":"0",\n"ActiveState":"active",\n"After":"systemd-journald.socketbasic.targetnetwork.targetsshd-keygen.servicesystem.slice",\n"AllowIsolate":"no",\n"AmbientCapabilities":"0",\n"AssertResult":"yes",\n"AssertTimestamp":"Fri2019-05-2411:19:48CST",\n"AssertTimestampMonotonic":"46256667",\n"Before":"shutdown.targetmulti-user.target",\n"BlockIOAccounting":"no",\n"BlockIOWeight":"18446744073709551615",\n"CPUAccounting":"no",\n"CPUQuotaPerSecUSec":"infinity",\n"CPUSchedulingPolicy":"0",\n"CPUSchedulingPriority":"0",\n"CPUSchedulingResetOnFork":"no",\n"CPUShares":"18446744073709551615",\n"CanIsolate":"no",\n"CanReload":"yes",\n"CanStart":"yes",\n"CanStop":"yes",\n"CapabilityBoundingSet":"18446744073709551615",\n"ConditionResult":"yes",\n"ConditionTimestamp":"Fri2019-05-2411:19:48CST",\n"ConditionTimestampMonotonic":"46256667",\n"ConflictedBy":"sshd.socket",\n"Conflicts":"shutdown.target",\n"ConsistsOf":"sshd-keygen.service",\n"ControlGroup":"/system.slice/sshd.service",\n"ControlPID":"0",\n"DefaultDependencies":"yes",\n"Delegate":"no",\n"Description":"OpenSSHserverdaemon",\n"DevicePolicy":"auto",\n"Documentation":"man:sshd(8)man:sshd_config(5)",\n"EnvironmentFile":"/etc/sysconfig/sshd(ignore_errors=no)",\n"ExecMainCode":"0",\n"ExecMainExitTimestampMonotonic":"0",\n"ExecMainPID":"6903",\n"ExecMainStartTimestamp":"Fri2019-05-2411:19:48CST",\n"ExecMainStartTimestampMonotonic":"46286542",\n"ExecMainStatus":"0",\n"ExecReload":"{path=/bin/kill;argv[]=/bin/kill-HUP$MAINPID;ignore_errors=no;start_time=[n/a];stop_time=[n/a];pid=0;code=(null);status=0/0}",\n"ExecStart":"{path=/usr/sbin/sshd;argv[]=/usr/sbin/sshd-D$OPTIONS;ignore_errors=no;start_time=[Fri2019-05-2411:19:48CST];stop_time=[n/a];pid=6903;code=(null);status=0/0}",\n"FailureAction":"none",\n"FileDescriptorStoreMax":"0",\n"FragmentPath":"/usr/lib/systemd/system/sshd.service",\n"GuessMainPID":"yes",\n"IOScheduling":"0",\n"Id":"sshd.service",\n"IgnoreOnIsolate":"no",\n"IgnoreOnSnapshot":"no",\n"IgnoreSIGPIPE":"yes",\n"InactiveEnterTimestampMonotonic":"0",\n"InactiveExitTimestamp":"Fri2019-05-2411:19:48CST",\n"InactiveExitTimestampMonotonic":"46286621",\n"JobTimeoutAction":"none",\n"JobTimeoutUSec":"0",\n"KillMode":"process",\n"KillSignal":"15",\n"LimitAS":"18446744073709551615",\n"LimitCORE":"18446744073709551615",\n"LimitCPU":"18446744073709551615",\n"LimitDATA":"18446744073709551615",\n"LimitFSIZE":"18446744073709551615",\n"LimitLOCKS":"18446744073709551615",\n"LimitMEMLOCK":"65536",\n"LimitMSGQUEUE":"819200",\n"LimitNICE":"0",\n"LimitNOFILE":"4096",\n"LimitNPROC":"7155",\n"LimitRSS":"18446744073709551615",\n"LimitRTPRIO":"0",\n"LimitRTTIME":"18446744073709551615",\n"LimitSIGPENDING":"7155",\n"LimitSTACK":"18446744073709551615",\n"LoadState":"loaded",\n"MainPID":"6903",\n"MemoryAccounting":"no",\n"MemoryCurrent":"18446744073709551615",\n"MemoryLimit":"18446744073709551615",\n"MountFlags":"0",\n"Names":"sshd.service",\n"NeedDaemonReload":"no",\n"Nice":"0",\n"NoNewPrivileges":"no",\n"NonBlocking":"no",\n"NotifyAccess":"main",\n"OOMScoreAdjust":"0",\n"OnFailureJobMode":"replace",\n"PermissionsStartOnly":"no",\n"PrivateDevices":"no",\n"PrivateNetwork":"no",\n"PrivateTmp":"no",\n"ProtectHome":"no",\n"ProtectSystem":"no",\n"RefuseManualStart":"no",\n"RefuseManualStop":"no",\n"RemainAfterExit":"no",\n"Requires":"basic.target",\n"Restart":"on-failure",\n"RestartUSec":"42s",\n"Result":"success",\n"RootDirectoryStartOnly":"no",\n"RuntimeDirectoryMode":"0755",\n"SameProcessGroup":"no",\n"SecureBits":"0",\n"SendSIGHUP":"no",\n"SendSIGKILL":"yes",\n"Slice":"system.slice",\n"StandardError":"inherit",\n"StandardInput":"null",\n"StandardOutput":"journal",\n"StartLimitAction":"none",\n"StartLimitBurst":"5",\n"StartLimitInterval":"10000000",\n"StartupBlockIOWeight":"18446744073709551615",\n"StartupCPUShares":"18446744073709551615",\n"StatusErrno":"0",\n"StopWhenUnneeded":"no",\n"SubState":"running",\n"SyslogLevelPrefix":"yes",\n"SyslogPriority":"30",\n"SystemCallErrorNumber":"0",\n"TTYReset":"no",\n"TTYVHangup":"no",\n"TTYVTDisallocate":"no",\n"TasksAccounting":"no",\n"TasksCurrent":"18446744073709551615",\n"TasksMax":"18446744073709551615",\n"TimeoutStartUSec":"1min30s",\n"TimeoutStopUSec":"1min30s",\n"TimerSlackNSec":"50000",\n"Transient":"no",\n"Type":"notify",\n"UMask":"0022",\n"UnitFilePreset":"enabled",\n"UnitFileState":"enabled",\n"WantedBy":"multi-user.target",\n"Wants":"sshd-keygen.servicesystem.slice",\n"WatchdogTimestamp":"Fri2019-05-2411:19:50CST",\n"WatchdogTimestampMonotonic":"47607219",\n"WatchdogUSec":"0"\n}\n}\n

(2)确保服务状态停止

adhoc是什么意思?用法、例句的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Ansible入门---ad hoc命令、adhoc是什么意思?用法、例句的信息别忘了在本站进行查找哦。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023