{"id":7341,"date":"2018-04-06T09:20:44","date_gmt":"2018-04-06T01:20:44","guid":{"rendered":"http:\/\/rmohan.com\/?p=7341"},"modified":"2018-04-06T09:20:44","modified_gmt":"2018-04-06T01:20:44","slug":"ansible-palybooks","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=7341","title":{"rendered":"Ansible-palybooks"},"content":{"rendered":"<p><strong>Ansible-palybooks<\/strong><\/p>\n<p>root@controller:~$ ssh-keygen<br \/>\nGenerating public\/private rsa key pair.<br \/>\nEnter file in which to save the key (\/home\/root\/.ssh\/id_rsa):<br \/>\nEnter passphrase (empty for no passphrase):<br \/>\nEnter same passphrase again:<br \/>\nYour identification has been saved in \/home\/root\/.ssh\/id_rsa.<br \/>\nYour public key has been saved in \/home\/root\/.ssh\/id_rsa.pub.<br \/>\nThe key fingerprint is:<br \/>\n33:b8:4d:8f:95:bc:ed:1a:12:f3:6c:09:9f:52:23:d0 root@controller<br \/>\nThe key\u2019s randomart image is:<br \/>\n+\u2013[ RSA 2048]\u2014-+<br \/>\n| |<br \/>\n| . |<br \/>\n| . E |<br \/>\n| o . . |<br \/>\n| . S * |<br \/>\n| + \/ * |<br \/>\n| . = @ . |<br \/>\n| + o |<br \/>\n| \u2026 |<br \/>\n+\u2014\u2014\u2014\u2014\u2014\u2013+<br \/>\nroot@controller:~$ cat .ssh\/id_rsa.pub<br \/>\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCpEZIWC8UGJXA5uGDRj6vUd5KlwIvE0cat3opG4ZUajmrZU382PbdO3JG6DJa3beZXylYSOYeKtRVT9DxbeKgeTKQ4m8uamM81NAMRf0ZaiqSsZ9r56h1urlJCfD4y5nXwnUTvoBzZpTvTYwcevBzpNcI\/VnBIgpcKQWJq11iHHrcmybbFreujgotHg1XUwCv9BdpXbPnA50XbUyX97uqCE9EzIk7WnSNpTtsmASxMPSWoHB9seOas1mq7UBKo7Xfu7qaJJLIEnMisBLKHPb0hM23BNV2SiacJEpHSB5eJKULtMGDej38HbmBsQI3u+lzcWSRppDIt6BvO05brW5C5 root@controller<\/p>\n<p>copy the key to ansible deployment sever-host for password less auth<\/p>\n<p>root@controller:~$ cat \/etc\/hosts<br \/>\n127.0.0.1 localhost<br \/>\n127.0.1.1 controller<br \/>\n104.198.143.3 ansible<br \/>\nroot@controller:~$ ssh ansible<br \/>\nLast login: Wed Jan 18 02:51:09 2017 from 115.113.77.105<br \/>\n[root@ansible ~]$<\/p>\n<p>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ sudo vim \/etc\/ansible\/hosts<br \/>\n[web]<br \/>\n192.168.1.23<br \/>\n[web]<br \/>\n192.168.1.21<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ vim \/etc\/hosts<br \/>\n127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4<br \/>\n::1 localhost localhost.localdomain localhost6 localhost6.localdomain6<br \/>\n10.128.0.2 ansible.c.rich-operand-154505.internal ansible # Added by Google<br \/>\n169.254.169.254 metadata.google.internal # Added by Google<br \/>\n192.168.1.23 ansible1<br \/>\n192.168.1.22ansible2<br \/>\n104.198.143.3 ansible<\/p>\n<p>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ ansible -m ping web<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cping\u201d: \u201cpong\u201d<br \/>\n}<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ ansible -m ping web<br \/>\n192.168.1.22| SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cping\u201d: \u201cpong\u201d<br \/>\n}<\/p>\n<p>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ ansible -m ping all -u root<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cping\u201d: \u201cpong\u201d<br \/>\n}<br \/>\n192.168.1.22| SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cping\u201d: \u201cpong\u201d<br \/>\n}<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ ansible -m ping all -u root<br \/>\n192.168.1.23 | UNREACHABLE! =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cmsg\u201d: \u201cFailed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).\\r\\n\u201d,<br \/>\n\u201cunreachable\u201d: true<br \/>\n}<br \/>\n192.168.1.22| UNREACHABLE! =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cmsg\u201d: \u201cFailed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).\\r\\n\u201d,<br \/>\n\u201cunreachable\u201d: true<br \/>\n}<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ ansible -m ping all -b<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cping\u201d: \u201cpong\u201d<br \/>\n}<br \/>\n192.168.1.22| SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cping\u201d: \u201cpong\u201d<br \/>\n}<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ ansible -s -m ping all<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cping\u201d: \u201cpong\u201d<br \/>\n}<br \/>\n192.168.1.22| SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cping\u201d: \u201cpong\u201d<br \/>\n}<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ vim playbook1.yml<br \/>\n\u2014<br \/>\n\u2013 hosts: all<br \/>\ntasks:<br \/>\n\u2013 name: installing telnet package<br \/>\nyum: name=telnet state=present<\/p>\n<p>[root@ansible ~]$ ansible-playbook playbook1.yml<\/p>\n<p>PLAY [all] *********************************************************************<\/p>\n<p>TASK [setup] *******************************************************************<br \/>\nok: [192.168.1.21]<br \/>\nok: [192.168.1.23]<\/p>\n<p>TASK [installing telnet package] ***********************************************<br \/>\nfatal: [192.168.1.23]: FAILED! =&gt; {\u201cchanged\u201d: true, \u201cfailed\u201d: true, \u201cmsg\u201d: \u201cYou need to be root to perform this command.\\n\u201d, \u201crc\u201d: 1, \u201cresults\u201d: [\u201cLoaded plugins: fastestmirror\\n\u201d]}<br \/>\nfatal: [192.168.1.21]: FAILED! =&gt; {\u201cchanged\u201d: true, \u201cfailed\u201d: true, \u201cmsg\u201d: \u201cYou need to be root to perform this command.\\n\u201d, \u201crc\u201d: 1, \u201cresults\u201d: [\u201cLoaded plugins: fastestmirror\\n\u201d]}<br \/>\nto retry, use: \u2013limit @\/home\/root\/playbook1.retry<\/p>\n<p>PLAY RECAP *********************************************************************<br \/>\n192.168.1.22: ok=1 changed=0 unreachable=0 failed=1<br \/>\n192.168.1.23 : ok=1 changed=0 unreachable=0 failed=1<\/p>\n<p>[root@ansible ~]$ ansible-playbook playbook1.yml -b<\/p>\n<p>PLAY [all] *********************************************************************<\/p>\n<p>TASK [setup] *******************************************************************<br \/>\nok: [192.168.1.21]<br \/>\nok: [192.168.1.23]<\/p>\n<p>TASK [installing telnet package] ***********************************************<br \/>\nchanged: [192.168.1.23]<br \/>\nchanged: [192.168.1.21]<\/p>\n<p>PLAY RECAP *********************************************************************<br \/>\n192.168.1.22: ok=2 changed=1 unreachable=0 failed=0<br \/>\n192.168.1.23 : ok=2 changed=1 unreachable=0 failed=0<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ vim playbook2.yml<br \/>\n\u2014<br \/>\n\u2013 hosts: all<br \/>\ntasks:<br \/>\n\u2013 name: inatalling nfs package<br \/>\nyum: name=nfs-utils state=present<\/p>\n<p>\u2013 name: statrting nfs service<br \/>\nservice: name=nfs state=started enabled=yes<\/p>\n<p>[root@ansible ~]$ ansible-playbook playbook2.yml \u2013syntax-check<\/p>\n<p>playbook: playbook2.yml<br \/>\n[root@ansible ~]$ ansible-playbook playbook2.yml \u2013check<\/p>\n<p>PLAY [all] *********************************************************************<\/p>\n<p>TASK [setup] *******************************************************************<br \/>\nok: [192.168.1.21]<br \/>\nok: [192.168.1.23]<\/p>\n<p>TASK [inatalling nfs package] **************************************************<br \/>\nchanged: [192.168.1.23]<br \/>\nchanged: [192.168.1.21]<\/p>\n<p>TASK [statrting nfs service] ***************************************************<br \/>\nfatal: [192.168.1.21]: FAILED! =&gt; {\u201cchanged\u201d: false, \u201cfailed\u201d: true, \u201cmsg\u201d: \u201cCould not find the requested service \\\u201d\u2018nfs\u2019\\\u201d: \u201c}<br \/>\nfatal: [192.168.1.23]: FAILED! =&gt; {\u201cchanged\u201d: false, \u201cfailed\u201d: true, \u201cmsg\u201d: \u201cCould not find the requested service \\\u201d\u2018nfs\u2019\\\u201d: \u201c}<br \/>\nto retry, use: \u2013limit @\/home\/root\/playbook2.retry<\/p>\n<p>PLAY RECAP *********************************************************************<br \/>\n192.168.1.22: ok=2 changed=1 unreachable=0 failed=1<br \/>\n192.168.1.23 : ok=2 changed=1 unreachable=0 failed=1<\/p>\n<p>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014<br \/>\n[root@ansible ~]$ ansible-playbook playbook2.yml -b<\/p>\n<p>PLAY [all] *********************************************************************<\/p>\n<p>TASK [setup] *******************************************************************<br \/>\nok: [192.168.1.21]<br \/>\nok: [192.168.1.23]<\/p>\n<p>TASK [inatalling nfs package] **************************************************<br \/>\nchanged: [192.168.1.21]<br \/>\nchanged: [192.168.1.23]<\/p>\n<p>TASK [statrting nfs service] ***************************************************<br \/>\nchanged: [192.168.1.21]<br \/>\nchanged: [192.168.1.23]<\/p>\n<p>PLAY RECAP *********************************************************************<br \/>\n192.168.1.22: ok=3 changed=2 unreachable=0 failed=0<br \/>\n192.168.1.23 : ok=3 changed=2 unreachable=0 failed=0<br \/>\n\u2014\u2014\u2014\u2014\u2014-<\/p>\n<p>Run again and again same play book configuration remains same as Idempotent<br \/>\n[root@ansible ~]$ ansible-playbook playbook2.yml -b<\/p>\n<p>PLAY [all] *********************************************************************<\/p>\n<p>TASK [setup] *******************************************************************<br \/>\nok: [192.168.1.21]<br \/>\nok: [192.168.1.23]<\/p>\n<p>TASK [inatalling nfs package] **************************************************<br \/>\nok: [192.168.1.21]<br \/>\nok: [192.168.1.23]<\/p>\n<p>TASK [statrting nfs service] ***************************************************<br \/>\nok: [192.168.1.21]<br \/>\nok: [192.168.1.23]<\/p>\n<p>PLAY RECAP *********************************************************************<br \/>\n192.168.1.22: ok=3 changed=0 unreachable=0 failed=0<br \/>\n192.168.1.23 : ok=3 changed=0 unreachable=0 failed=0<\/p>\n<p>=================================================<br \/>\n[root@ansible ~]$ ansible all -a \u201cservice nfs status\u201d -b<br \/>\n192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\n? nfs-server.service \u2013 NFS server and services<br \/>\nLoaded: loaded (\/usr\/lib\/systemd\/system\/nfs-server.service; enabled; vendor preset: disabled)<br \/>\nActive: active (exited) since Wed 2017-01-18 04:14:18 UTC; 2min 13s ago<br \/>\nProcess: 12036 ExecStart=\/usr\/sbin\/rpc.nfsd $RPCNFSDARGS (code=exited, status=0\/SUCCESS)<br \/>\nProcess: 12035 ExecStartPre=\/usr\/sbin\/exportfs -r (code=exited, status=0\/SUCCESS)<br \/>\nMain PID: 12036 (code=exited, status=0\/SUCCESS)<br \/>\nCGroup: \/system.slice\/nfs-server.service<\/p>\n<p>192.168.1.22| SUCCESS | rc=0 &gt;&gt;<br \/>\n? nfs-server.service \u2013 NFS server and services<br \/>\nLoaded: loaded (\/usr\/lib\/systemd\/system\/nfs-server.service; enabled; vendor preset: disabled)<br \/>\nActive: active (exited) since Wed 2017-01-18 04:14:18 UTC; 2min 13s ago<br \/>\nProcess: 6738 ExecStart=\/usr\/sbin\/rpc.nfsd $RPCNFSDARGS (code=exited, status=0\/SUCCESS)<br \/>\nProcess: 6737 ExecStartPre=\/usr\/sbin\/exportfs -r (code=exited, status=0\/SUCCESS)<br \/>\nMain PID: 6738 (code=exited, status=0\/SUCCESS)<br \/>\nMemory: 0B<br \/>\nCGroup: \/system.slice\/nfs-server.service<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014<br \/>\n[root@ansible ~]$ vim playbook3.yml<br \/>\n\u2014<br \/>\n\u2013 hosts: all<br \/>\nbecome: yes<br \/>\ntasks:<br \/>\n\u2013 name: Install Apache.<br \/>\nyum: name={{ item }} state=present<br \/>\nwith_items:<br \/>\n\u2013 httpd<br \/>\n\u2013 httpd-devel<br \/>\n\u2013 name: Copy configuration files.<br \/>\ncopy:<br \/>\nsrc: \u201c{{ item.src }}\u201d<br \/>\ndest: \u201c{{ item.dest }}\u201d<br \/>\nowner: root<br \/>\ngroup: root<br \/>\nmode: 0644<br \/>\nwith_items:<br \/>\n\u2013 src: \u201chttpd.conf\u201d<br \/>\ndest: \u201c\/etc\/httpd\/conf\/httpd.conf\u201d<br \/>\n\u2013 src: \u201chttpd-vhosts.conf\u201d<br \/>\ndest: \u201c\/etc\/httpd\/conf\/httpd-vhosts.conf\u201d<br \/>\n\u2013 name: Make sure Apache is started now and at boot.<br \/>\nservice: name=httpd state=started enabled=yes<br \/>\n[root@ansible ~]$ ls -l<br \/>\ntotal 40<br \/>\n-rw-r\u2013r\u2013. 1 root root 11753 Jan 18 06:27 httpd.conf<br \/>\n-rw-r\u2013r\u2013. 1 root root 824 Jan 18 06:27 httpd-vhosts.conf<\/p>\n<p>[root@ansible ~]$ ansible-playbook playbook3.yml<\/p>\n<p>PLAY [all] *********************************************************************<\/p>\n<p>TASK [setup] *******************************************************************<br \/>\nok: [192.168.1.21]<br \/>\nok: [192.168.1.23]<\/p>\n<p>TASK [Install Apache.] *********************************************************<br \/>\nchanged: [192.168.1.23] =&gt; (item=[u\u2019httpd\u2019, u\u2019httpd-devel\u2019])<br \/>\nchanged: [192.168.1.21] =&gt; (item=[u\u2019httpd\u2019, u\u2019httpd-devel\u2019])<\/p>\n<p>TASK [Copy configuration files.] ***********************************************<br \/>\nok: [192.168.1.21] =&gt; (item={u\u2019dest\u2019: u\u2019\/etc\/httpd\/conf\/httpd.conf\u2019, u\u2019src\u2019: u\u2019httpd.conf\u2019})<br \/>\nok: [192.168.1.23] =&gt; (item={u\u2019dest\u2019: u\u2019\/etc\/httpd\/conf\/httpd.conf\u2019, u\u2019src\u2019: u\u2019httpd.conf\u2019})<br \/>\nok: [192.168.1.21] =&gt; (item={u\u2019dest\u2019: u\u2019\/etc\/httpd\/conf\/httpd-vhosts.conf\u2019, u\u2019src\u2019: u\u2019httpd-vhosts.conf\u2019})<br \/>\nok: [192.168.1.23] =&gt; (item={u\u2019dest\u2019: u\u2019\/etc\/httpd\/conf\/httpd-vhosts.conf\u2019, u\u2019src\u2019: u\u2019httpd-vhosts.conf\u2019})<\/p>\n<p>TASK [Make sure Apache is started now and at boot.] ****************************<br \/>\nchanged: [192.168.1.21]<br \/>\nchanged: [192.168.1.23]<\/p>\n<p>PLAY RECAP *********************************************************************<br \/>\n192.168.1.22: ok=4 changed=2 unreachable=0 failed=0<br \/>\n192.168.1.23 : ok=4 changed=2 unreachable=0 failed=0<\/p>\n<p>playbook1playbook2<br \/>\n[root@ansible ~]$ sudo vim \/etc\/ansible\/hosts<br \/>\n[web]<br \/>\n192.168.1.23<br \/>\n[web]<br \/>\n192.168.1.21<br \/>\n[multi:children]<br \/>\nweb<br \/>\nweb<\/p>\n<p>[root@ansible ~]$ ansible multi -m ping<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cping\u201d: \u201cpong\u201d<br \/>\n}<br \/>\n192.168.1.22| SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cping\u201d: \u201cpong\u201d<br \/>\n}<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014<\/p>\n<p>[root@ansible ~]$ ansible multi -a hostname<br \/>\n192.168.1.22| SUCCESS | rc=0 &gt;&gt;<br \/>\nansible2.c.rich-operand-154505.internal<\/p>\n<p>192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\nansible1.c.rich-operand-154505.internal<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ ansible multi -a \u2018free -m\u2019<br \/>\n192.168.1.22| SUCCESS | rc=0 &gt;&gt;<br \/>\ntotal used free shared buff\/cache available<br \/>\nMem: 3700 229 1673 178 1796 2978<br \/>\nSwap: 0 0 0<\/p>\n<p>192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\ntotal used free shared buff\/cache available<br \/>\nMem: 3700 329 265 16 3105 3031<br \/>\nSwap: 0 0 0<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ ansible multi -a \u201cdu -h\u201d<br \/>\n192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\n4.0K .\/.ssh<br \/>\n56K .\/.ansible\/tmp\/ansible-tmp-1484714028.87-63512995370206<br \/>\n56K .\/.ansible\/tmp<br \/>\n56K .\/.ansible<br \/>\n0 .\/.puppetlabs\/var<br \/>\n0 .\/.puppetlabs\/etc<br \/>\n0 .\/.puppetlabs\/opt\/puppet<br \/>\n0 .\/.puppetlabs\/opt<br \/>\n0 .\/.puppetlabs<br \/>\n80K .<\/p>\n<p>192.168.1.22| SUCCESS | rc=0 &gt;&gt;<br \/>\n4.0K .\/.ssh<br \/>\n56K .\/.ansible\/tmp\/ansible-tmp-1484714028.87-38086154108105<br \/>\n56K .\/.ansible\/tmp<br \/>\n56K .\/.ansible<br \/>\n80K .<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ ansible multi -a \u2018service httpd status\u2019 -b<br \/>\n192.168.1.22| FAILED | rc=4 &gt;&gt;<br \/>\nRedirecting to \/bin\/systemctl status httpd.service<br \/>\nUnit httpd.service could not be found.<\/p>\n<p>192.168.1.23 | FAILED | rc=4 &gt;&gt;<br \/>\nRedirecting to \/bin\/systemctl status httpd.service<br \/>\nUnit httpd.service could not be found.<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\n[root@ansible ~]$ ansible multi -a \u2018netstat -tlpn\u2019 -s<br \/>\n192.168.1.22| SUCCESS | rc=0 &gt;&gt;<br \/>\nActive Internet connections (only servers)<br \/>\nProto Recv-Q Send-Q Local Address Foreign Address State PID\/Program name<br \/>\ntcp 0 0 127.0.0.1:2380 0.0.0.0:* LISTEN 15329\/etcd<br \/>\ntcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1\/systemd<br \/>\ntcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 6736\/rpc.mountd<br \/>\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 994\/sshd<br \/>\ntcp 0 0 0.0.0.0:34457 0.0.0.0:* LISTEN \u2013<br \/>\ntcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1041\/master<br \/>\ntcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN \u2013<br \/>\ntcp 0 0 0.0.0.0:43009 0.0.0.0:* LISTEN 6724\/rpc.statd<br \/>\ntcp6 0 0 :::10251 :::* LISTEN 15502\/kube-schedule<br \/>\ntcp6 0 0 :::6443 :::* LISTEN 15445\/kube-apiserve<br \/>\ntcp6 0 0 :::2379 :::* LISTEN 15329\/etcd<br \/>\ntcp6 0 0 :::10252 :::* LISTEN 15463\/kube-controll<br \/>\ntcp6 0 0 :::111 :::* LISTEN 6524\/rpcbind<br \/>\ntcp6 0 0 :::20048 :::* LISTEN 6736\/rpc.mountd<br \/>\ntcp6 0 0 :::8080 :::* LISTEN 15445\/kube-apiserve<br \/>\ntcp6 0 0 :::22 :::* LISTEN 994\/sshd<br \/>\ntcp6 0 0 ::1:25 :::* LISTEN 1041\/master<br \/>\ntcp6 0 0 :::36474 :::* LISTEN \u2013<br \/>\ntcp6 0 0 :::2049 :::* LISTEN \u2013<br \/>\ntcp6 0 0 :::54309 :::* LISTEN 6724\/rpc.statd<\/p>\n<p>192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\nActive Internet connections (only servers)<br \/>\nProto Recv-Q Send-Q Local Address Foreign Address State PID\/Program name<br \/>\ntcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1\/systemd<br \/>\ntcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 7715\/java<br \/>\ntcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 12034\/rpc.mountd<br \/>\ntcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 7715\/java<br \/>\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 990\/sshd<br \/>\ntcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1032\/master<br \/>\ntcp 0 0 0.0.0.0:4447 0.0.0.0:* LISTEN 7715\/java<br \/>\ntcp 0 0 0.0.0.0:45185 0.0.0.0:* LISTEN \u2013<br \/>\ntcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN \u2013<br \/>\ntcp 0 0 0.0.0.0:9990 0.0.0.0:* LISTEN 7715\/java<br \/>\ntcp 0 0 0.0.0.0:53095 0.0.0.0:* LISTEN 12018\/rpc.statd<br \/>\ntcp6 0 0 :::111 :::* LISTEN 11822\/rpcbind<br \/>\ntcp6 0 0 :::20048 :::* LISTEN 12034\/rpc.mountd<br \/>\ntcp6 0 0 :::22 :::* LISTEN 990\/sshd<br \/>\ntcp6 0 0 :::43255 :::* LISTEN \u2013<br \/>\ntcp6 0 0 :::55927 :::* LISTEN 12018\/rpc.statd<br \/>\ntcp6 0 0 ::1:25 :::* LISTEN 1032\/master<br \/>\ntcp6 0 0 :::2049 :::* LISTEN \u2013<\/p>\n<p>[root@ansible ~]$ ansible multi -s -m yum -a \u201cname=ntp state=present\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cmsg\u201d: \u201c\u201d,<br \/>\n\u201crc\u201d: 0,<br \/>\n\u201cresults\u201d: [<br \/>\n\u201cntp-4.2.6p5-25.el7.centos.x86_64 providing ntp is already installed\u201d<br \/>\n]<br \/>\n}<br \/>\n192.168.1.22| SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cmsg\u201d: \u201c\u201d,<br \/>\n\u201crc\u201d: 0,<br \/>\n\u201cresults\u201d: [<br \/>\n\u201cntp-4.2.6p5-25.el7.centos.x86_64 providing ntp is already installed\u201d<br \/>\n]<br \/>\n}<\/p>\n<p>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013<br \/>\n[root@ansible ~]$ ansible multi -s -m service -a \u201cname=ntpd state=started enabled=yes\u201d<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013<br \/>\n[root@ansible ~]$ ntpdate<br \/>\n18 Jan 04:57:35 ntpdate[4532]: no servers can be used, exiting<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013<br \/>\n[root@ansible ~]$ ansible multi -s -a \u201cservice ntpd stop\u201d<br \/>\n192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\nRedirecting to \/bin\/systemctl stop ntpd.service<\/p>\n<p>192.168.1.22| SUCCESS | rc=0 &gt;&gt;<br \/>\nRedirecting to \/bin\/systemctl stop ntpd.service<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013<br \/>\n[root@ansible ~]$ ansible multi -s -a \u201cntpdate -q 0.rhel.pool.ntp.org\u201d<br \/>\n192.168.1.22| SUCCESS | rc=0 &gt;&gt;<br \/>\nserver 138.236.128.112, stratum 2, offset -0.003149, delay 0.05275<br \/>\nserver 71.210.146.228, stratum 2, offset 0.003796, delay 0.04633<br \/>\nserver 128.138.141.172, stratum 1, offset -0.000194, delay 0.03752<br \/>\nserver 69.89.207.199, stratum 2, offset -0.000211, delay 0.05193<br \/>\n18 Jan 04:58:22 ntpdate[10370]: adjust time server 128.138.141.172 offset -0.000194 sec<\/p>\n<p>192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\nserver 173.230.144.109, stratum 2, offset 0.000549, delay 0.06175<br \/>\nserver 45.127.113.2, stratum 3, offset 0.000591, delay 0.06134<br \/>\nserver 4.53.160.75, stratum 2, offset -0.000900, delay 0.04163<br \/>\nserver 50.116.52.97, stratum 2, offset -0.001006, delay 0.05426<br \/>\n18 Jan 04:58:22 ntpdate[15477]: adjust time server 4.53.160.75 offset -0.000900 sec<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013<br \/>\n[root@ansible ~]$ ansible web -s -m yum -a \u201cname=MySQL-python state=present\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cmsg\u201d: \u201c\u201d,<br \/>\n\u201crc\u201d: 0,<br \/>\n\u201cresults\u201d: [<br \/>\n\u201cLoaded plugins: fastestmirror\\nLoading mirror speeds from cached hostfile\\n * base: bay.uchicago.edu\\n * epel: mirror.steadfast.net\\n * extras: mirror.tzulo.com\\n * updates: mirror.team-cymru.org\\nResolving Dependencies\\n\u2013&gt; Running transaction check\\n\u2014&gt; Package MySQL-python.x86_64 0:1.2.5-1.el7 will be installed\\n\u2013&gt; Finished Dependency Resolution\\n\\nDependencies Resolved\\n\\n================================================================================\\n Package Arch Version Repository Size\\n================================================================================\\nInstalling:\\n MySQL-python x86_64 1.2.5-1.el7 base 90 k\\n\\nTransaction Summary\\n================================================================================\\nInstall 1 Package\\n\\nTotal download size: 90 k\\nInstalled size: 284 k\\nDownloading packages:\\nRunning transaction check\\nRunning transaction test\\nTransaction test succeeded\\nRunning transaction\\n Installing : MySQL-python-1.2.5-1.el7.x86_64 1\/1 \\n Verifying : MySQL-python-1.2.5-1.el7.x86_64 1\/1 \\n\\nInstalled:\\n MySQL-python.x86_64 0:1.2.5-1.el7 \\n\\nComplete!\\n\u201d<br \/>\n]<br \/>\n}<\/p>\n<p>[root@ansible ~]$ ansible web -s -m yum -a \u201cname=python-setuptools state=present\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cmsg\u201d: \u201c\u201d,<br \/>\n\u201crc\u201d: 0,<br \/>\n\u201cresults\u201d: [<br \/>\n\u201cpython-setuptools-0.9.8-4.el7.noarch providing python-setuptools is already installed\u201d<br \/>\n]<br \/>\n}<\/p>\n<p>[root@ansible ~]$ ansible web -s -m easy_install -a \u201cname=django state=present\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cbinary\u201d: \u201c\/bin\/easy_install\u201d,<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cname\u201d: \u201cdjango\u201d,<br \/>\n\u201cvirtualenv\u201d: null<br \/>\n}<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013<br \/>\n[root@ansible ~]$ ansible web -s -m user -a \u201cname=admin state=present\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201ccomment\u201d: \u201c\u201d,<br \/>\n\u201ccreatehome\u201d: true,<br \/>\n\u201cgroup\u201d: 1004,<br \/>\n\u201chome\u201d: \u201c\/home\/admin\u201d,<br \/>\n\u201cname\u201d: \u201cadmin\u201d,<br \/>\n\u201cshell\u201d: \u201c\/bin\/bash\u201d,<br \/>\n\u201cstate\u201d: \u201cpresent\u201d,<br \/>\n\u201csystem\u201d: false,<br \/>\n\u201cuid\u201d: 1003<br \/>\n}<br \/>\n[root@ansible ~]$ ansible web -s -m group -a \u201cname=admin state=present\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cgid\u201d: 1004,<br \/>\n\u201cname\u201d: \u201cadmin\u201d,<br \/>\n\u201cstate\u201d: \u201cpresent\u201d,<br \/>\n\u201csystem\u201d: false<br \/>\n}<br \/>\n[root@ansible ~]$ ansible web -s -m user -a \u201cname=first group=admin state=present\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201ccomment\u201d: \u201c\u201d,<br \/>\n\u201ccreatehome\u201d: true,<br \/>\n\u201cgroup\u201d: 1004,<br \/>\n\u201chome\u201d: \u201c\/home\/first\u201d,<br \/>\n\u201cname\u201d: \u201cfirst\u201d,<br \/>\n\u201cshell\u201d: \u201c\/bin\/bash\u201d,<br \/>\n\u201cstate\u201d: \u201cpresent\u201d,<br \/>\n\u201csystem\u201d: false,<br \/>\n\u201cuid\u201d: 1004<br \/>\n}<br \/>\n[root@ansible ~]$ ansible web -a \u201ctail \/etc\/passwd\u201d<br \/>\n192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\nsystemd-network:x:192:192:systemd Network Management:\/:\/sbin\/nologin<br \/>\ntss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:\/dev\/null:\/sbin\/nologin<br \/>\nroot:x:1000:1001::\/home\/root:\/bin\/bash<br \/>\ntest:x:1001:1002::\/home\/test:\/bin\/bash<br \/>\njboss:x:1002:1003::\/home\/jboss:\/bin\/bash<br \/>\nrpc:x:32:32:Rpcbind Daemon:\/var\/lib\/rpcbind:\/sbin\/nologin<br \/>\nrpcuser:x:29:29:RPC Service User:\/var\/lib\/nfs:\/sbin\/nologin<br \/>\nnfsnobody:x:65534:65534:Anonymous NFS User:\/var\/lib\/nfs:\/sbin\/nologin<br \/>\nadmin:x:1003:1004::\/home\/admin:\/bin\/bash<br \/>\nfirst:x:1004:1004::\/home\/first:\/bin\/bash<\/p>\n<p>[root@ansible ~]$ ansible web -a \u201ctail \/etc\/shadow\u201d<br \/>\n192.168.1.23 | FAILED | rc=1 &gt;&gt;<br \/>\ntail: cannot open \u2018\/etc\/shadow\u2019 for reading: Permission denied<\/p>\n<p>[root@ansible ~]$ ansible web -a \u201ctail \/etc\/shadow\u201d -b<br \/>\n192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\nsystemd-network:!!:17176::::::<br \/>\ntss:!!:17176::::::<br \/>\nroot:*:17178:0:99999:7:::<br \/>\ntest:*:17178:0:99999:7:::<br \/>\njboss:!!:17182:0:99999:7:::<br \/>\nrpc:!!:17184:0:99999:7:::<br \/>\nrpcuser:!!:17184::::::<br \/>\nnfsnobody:!!:17184::::::<br \/>\nadmin:!!:17184:0:99999:7:::<br \/>\nfirst:!!:17184:0:99999:7:::<br \/>\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013<\/p>\n<p>[root@ansible ~]$ ansible web -m stat -a \u201cpath=\/etc\/hosts\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cstat\u201d: {<br \/>\n\u201catime\u201d: 1484635843.2532218,<br \/>\n\u201cchecksum\u201d: \u201c5fed7929fb7be9b1046252b6b7e0e2263fbc0738\u201d,<br \/>\n\u201cctime\u201d: 1484203757.175483,<br \/>\n\u201cdev\u201d: 2049,<br \/>\n\u201cexecutable\u201d: false,<br \/>\n\u201cexists\u201d: true,<br \/>\n\u201cgid\u201d: 0,<br \/>\n\u201cgr_name\u201d: \u201croot\u201d,<br \/>\n\u201cinode\u201d: 240,<br \/>\n\u201cisblk\u201d: false,<br \/>\n\u201cischr\u201d: false,<br \/>\n\u201cisdir\u201d: false,<br \/>\n\u201cisfifo\u201d: false,<br \/>\n\u201cisgid\u201d: false,<br \/>\n\u201cislnk\u201d: false,<br \/>\n\u201cisreg\u201d: true,<br \/>\n\u201cissock\u201d: false,<br \/>\n\u201cisuid\u201d: false,<br \/>\n\u201cmd5\u201d: \u201c10f391742a450d220ff00269216eff8a\u201d,<br \/>\n\u201cmode\u201d: \u201c0644\u201d,<br \/>\n\u201cmtime\u201d: 1484203757.175483,<br \/>\n\u201cnlink\u201d: 1,<br \/>\n\u201cpath\u201d: \u201c\/etc\/hosts\u201d,<br \/>\n\u201cpw_name\u201d: \u201croot\u201d,<br \/>\n\u201creadable\u201d: true,<br \/>\n\u201crgrp\u201d: true,<br \/>\n\u201croth\u201d: true,<br \/>\n\u201crusr\u201d: true,<br \/>\n\u201csize\u201d: 297,<br \/>\n\u201cuid\u201d: 0,<br \/>\n\u201cwgrp\u201d: false,<br \/>\n\u201cwoth\u201d: false,<br \/>\n\u201cwriteable\u201d: false,<br \/>\n\u201cwusr\u201d: true,<br \/>\n\u201cxgrp\u201d: false,<br \/>\n\u201cxoth\u201d: false,<br \/>\n\u201cxusr\u201d: false<br \/>\n}<br \/>\n}<\/p>\n<p>========================================<br \/>\n[root@ansible ~]$ ansible multi -m copy -a \u201csrc=\/etc\/hosts dest=\/tmp\/hosts\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cchecksum\u201d: \u201c08aa54eecc8a866b53d38351ea72e5bb97718005\u201d,<br \/>\n\u201cdest\u201d: \u201c\/tmp\/hosts\u201d,<br \/>\n\u201cgid\u201d: 1001,<br \/>\n\u201cgroup\u201d: \u201croot\u201d,<br \/>\n\u201cmd5sum\u201d: \u201c72ff7a2085a5186d0cab74f14bae1483\u201d,<br \/>\n\u201cmode\u201d: \u201c0664\u201d,<br \/>\n\u201cowner\u201d: \u201croot\u201d,<br \/>\n\u201csecontext\u201d: \u201cunconfined_u:object_r:user_home_t:s0\u201d,<br \/>\n\u201csize\u201d: 369,<br \/>\n\u201csrc\u201d: \u201c\/home\/root\/.ansible\/tmp\/ansible-tmp-1484717608.47-178441141048946\/source\u201d,<br \/>\n\u201cstate\u201d: \u201cfile\u201d,<br \/>\n\u201cuid\u201d: 1000<br \/>\n}<br \/>\n192.168.1.22| SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cchecksum\u201d: \u201c08aa54eecc8a866b53d38351ea72e5bb97718005\u201d,<br \/>\n\u201cdest\u201d: \u201c\/tmp\/hosts\u201d,<br \/>\n\u201cgid\u201d: 1001,<br \/>\n\u201cgroup\u201d: \u201croot\u201d,<br \/>\n\u201cmd5sum\u201d: \u201c72ff7a2085a5186d0cab74f14bae1483\u201d,<br \/>\n\u201cmode\u201d: \u201c0664\u201d,<br \/>\n\u201cowner\u201d: \u201croot\u201d,<br \/>\n\u201csecontext\u201d: \u201cunconfined_u:object_r:user_home_t:s0\u201d,<br \/>\n\u201csize\u201d: 369,<br \/>\n\u201csrc\u201d: \u201c\/home\/root\/.ansible\/tmp\/ansible-tmp-1484717608.85-272034831244848\/source\u201d,<br \/>\n\u201cstate\u201d: \u201cfile\u201d,<br \/>\n\u201cuid\u201d: 1000<br \/>\n}<br \/>\n==========================================<br \/>\n[root@ansible ~]$ ansible multi -s -m fetch -a \u201csrc=\/etc\/hosts dest=\/tmp\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cchecksum\u201d: \u201c5fed7929fb7be9b1046252b6b7e0e2263fbc0738\u201d,<br \/>\n\u201cdest\u201d: \u201c\/tmp\/192.168.1.23\/etc\/hosts\u201d,<br \/>\n\u201cmd5sum\u201d: \u201c10f391742a450d220ff00269216eff8a\u201d,<br \/>\n\u201cremote_checksum\u201d: \u201c5fed7929fb7be9b1046252b6b7e0e2263fbc0738\u201d,<br \/>\n\u201cremote_md5sum\u201d: null<br \/>\n}<br \/>\n192.168.1.22| SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cchecksum\u201d: \u201c0b24c9ee4a888defdf6769d5e72f65761e882f1f\u201d,<br \/>\n\u201cdest\u201d: \u201c\/tmp\/192.168.1.21\/etc\/hosts\u201d,<br \/>\n\u201cmd5sum\u201d: \u201ce2dd8ef8a5f58f35d7a3f3dce7f2f2bf\u201d,<br \/>\n\u201cremote_checksum\u201d: \u201c0b24c9ee4a888defdf6769d5e72f65761e882f1f\u201d,<br \/>\n\u201cremote_md5sum\u201d: null<br \/>\n}<br \/>\n============================================<br \/>\n[root@ansible ~]$ ls -l \/tmp\/<br \/>\ntotal 16<br \/>\ndrwxrwxr-x. 3 root root 16 Jan 18 05:34 192.168.1.21<br \/>\ndrwxrwxr-x. 3 root root 16 Jan 18 05:34 192.168.1.23<\/p>\n<p>[root@ansible ~]$ cat \/tmp\/192.168.1.23\/etc\/hosts<br \/>\n127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4<br \/>\n::1 localhost localhost.localdomain localhost6 localhost6.localdomain6<br \/>\n10.128.0.3 ansible1.c.rich-operand-154505.internal ansible1 # Added by Google<br \/>\n169.254.169.254 metadata.google.internal # Added by Google<br \/>\n==========================================<br \/>\n[root@ansible ~]$ ansible multi -m file -a \u201cdest=\/tmp\/test mode=644 state=directory\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cgid\u201d: 1001,<br \/>\n\u201cgroup\u201d: \u201croot\u201d,<br \/>\n\u201cmode\u201d: \u201c0644\u201d,<br \/>\n\u201cowner\u201d: \u201croot\u201d,<br \/>\n\u201cpath\u201d: \u201c\/tmp\/test\u201d,<br \/>\n\u201csecontext\u201d: \u201cunconfined_u:object_r:user_tmp_t:s0\u201d,<br \/>\n\u201csize\u201d: 6,<br \/>\n\u201cstate\u201d: \u201cdirectory\u201d,<br \/>\n\u201cuid\u201d: 1000<br \/>\n}<br \/>\n192.168.1.22| SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cgid\u201d: 1001,<br \/>\n\u201cgroup\u201d: \u201croot\u201d,<br \/>\n\u201cmode\u201d: \u201c0644\u201d,<br \/>\n\u201cowner\u201d: \u201croot\u201d,<br \/>\n\u201cpath\u201d: \u201c\/tmp\/test\u201d,<br \/>\n\u201csecontext\u201d: \u201cunconfined_u:object_r:user_tmp_t:s0\u201d,<br \/>\n\u201csize\u201d: 6,<br \/>\n\u201cstate\u201d: \u201cdirectory\u201d,<br \/>\n\u201cuid\u201d: 1000<br \/>\n}<br \/>\n===========================================<br \/>\n[root@ansible ~]$ ansible multi -s -m file -a \u201cdest=\/tmp\/test mode=644 owner=root state=directory\u201d<br \/>\n192.168.1.22| SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cgid\u201d: 1001,<br \/>\n\u201cgroup\u201d: \u201croot\u201d,<br \/>\n\u201cmode\u201d: \u201c0644\u201d,<br \/>\n\u201cowner\u201d: \u201croot\u201d,<br \/>\n\u201cpath\u201d: \u201c\/tmp\/test\u201d,<br \/>\n\u201csecontext\u201d: \u201cunconfined_u:object_r:user_tmp_t:s0\u201d,<br \/>\n\u201csize\u201d: 6,<br \/>\n\u201cstate\u201d: \u201cdirectory\u201d,<br \/>\n\u201cuid\u201d: 0<br \/>\n}<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cgid\u201d: 1001,<br \/>\n\u201cgroup\u201d: \u201croot\u201d,<br \/>\n\u201cmode\u201d: \u201c0644\u201d,<br \/>\n\u201cowner\u201d: \u201croot\u201d,<br \/>\n\u201cpath\u201d: \u201c\/tmp\/test\u201d,<br \/>\n\u201csecontext\u201d: \u201cunconfined_u:object_r:user_tmp_t:s0\u201d,<br \/>\n\u201csize\u201d: 6,<br \/>\n\u201cstate\u201d: \u201cdirectory\u201d,<br \/>\n\u201cuid\u201d: 0<br \/>\n}<br \/>\n================================================<br \/>\n[root@ansible ~]$ ansible multi -s -B 3600 -a \u201cyum -y update\u201d<br \/>\n=================================================<br \/>\n[root@ansible ~]$ ansible 192.168.1.23 -s -a \u201ctail \/var\/log\/messages\u201d<br \/>\n192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\nJan 18 05:41:03 ansible1 ansible-async_wrapper.py: Return async_wrapper task started.<br \/>\nJan 18 05:41:03 ansible1 ansible-async_wrapper.py: Starting module and watcher<br \/>\nJan 18 05:41:03 ansible1 ansible-async_wrapper.py: Start watching 18305 (3600)<br \/>\nJan 18 05:41:03 ansible1 ansible-async_wrapper.py: Start module (18305)<br \/>\nJan 18 05:41:03 ansible1 ansible-async_wrapper.py: Module complete (18305)<br \/>\nJan 18 05:41:08 ansible1 ansible-async_wrapper.py: Done in kid B.<br \/>\nJan 18 05:42:04 ansible1 systemd-logind: Removed session 180.<br \/>\nJan 18 05:42:04 ansible1 systemd: Started Session 181 of user root.<br \/>\nJan 18 05:42:04 ansible1 systemd-logind: New session 181 of user root.<br \/>\nJan 18 05:42:04 ansible1 systemd: Starting Session 181 of user root.<br \/>\n=================================================<br \/>\n[root@ansible ~]$ ansible multi -s -m shell -a \u201ctail \/var\/log\/messages | grep ansible-command | wc -l\u201d<br \/>\n192.168.1.23 | SUCCESS | rc=0 &gt;&gt;<br \/>\n0<\/p>\n<p>192.168.1.22| SUCCESS | rc=0 &gt;&gt;<br \/>\n0<br \/>\n=================================<br \/>\n[root@ansible ~]$ ansible web -s -m git -a \u201crepo=git:\/\/web.com\/path\/to\/repo.git dest=\/opt\/myapp update=yes version=1.2.4\u201d<br \/>\n192.168.1.23 | FAILED! =&gt; {<br \/>\n\u201cchanged\u201d: false,<br \/>\n\u201cfailed\u201d: true,<br \/>\n\u201cmsg\u201d: \u201cFailed to find required executable git\u201d<br \/>\n}<br \/>\n[root@ansible ~]$ ansible web -s -m yum -a \u201cname=git state=present\u201d<br \/>\n192.168.1.23 | SUCCESS =&gt; {<br \/>\n\u201cchanged\u201d: true,<br \/>\n\u201cmsg\u201d: \u201c\u201d,<br \/>\n\u201crc\u201d: 0,<br \/>\n\u201cresults\u201d: [<br \/>\n\u201cLoaded plugins: fastestmirror\\nLoading mirror speeds from cached hostfile\\n * base: bay.uchicago.edu\\n * epel: mirror.steadfast.net\\n * extras: mirror.tzulo.com\\n * updates: mirror.team-cymru.org\\nResolving Dependencies\\n\u2013&gt; Running transaction check\\n\u2014&gt; Package git.x86_64 0:1.8.3.1-6.el7_2.1 will be installed\\n\u2013&gt; Processing Dependency: perl-Git = 1.8.3.1-6.el7_2.1 for package: git-1.8.3.1-6.el7_2.1.x86_64\\n\u2013&gt; Processing Dependency: perl(Term::ReadKey) for package: git-1.8.3.1-6.el7_2.1.x86_64\\n\u2013&gt; Processing Dependency: perl(Git) for package: git-1.8.3.1-6.el7_2.1.x86_64\\n\u2013&gt; Processing Dependency: perl(Error) for package: git-1.8.3.1-6.el7_2.1.x86_64\\n\u2013&gt; Processing Dependency: libgnome-keyring.so.0()(64bit) for package: git-1.8.3.1-6.el7_2.1.x86_64\\n\u2013&gt; Running transaction check\\n\u2014&gt; Package libgnome-keyring.x86_64 0:3.8.0-3.el7 will be installed\\n\u2014&gt; Package perl-Error.noarch 1:0.17020-2.el7 will be installed\\n\u2014&gt; Package perl-Git.noarch 0:1.8.3.1-6.el7_2.1 will be installed\\n\u2014&gt; Package perl-TermReadKey.x86_64 0:2.30-20.el7 will be installed\\n\u2013&gt; Finished Dependency Resolution\\n\\nDependencies Resolved\\n\\n================================================================================\\n Package Arch Version Repository Size\\n================================================================================\\nInstalling:\\n git x86_64 1.8.3.1-6.el7_2.1 base 4.4 M\\nInstalling for dependencies:\\n libgnome-keyring x86_64 3.8.0-3.el7 base 109 k\\n perl-Error noarch 1:0.17020-2.el7 base 32 k\\n perl-Git noarch 1.8.3.1-6.el7_2.1 base 53 k\\n perl-TermReadKey x86_64 2.30-20.el7 base 31 k\\n\\nTransaction Summary\\n================================================================================\\nInstall 1 Package (+4 Dependent packages)\\n\\nTotal download size: 4.6 M\\nInstalled size: 23 M\\nDownloading packages:\\n\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013\\nTotal 12 MB\/s | 4.6 MB 00:00 \\nRunning transaction check\\nRunning transaction test\\nTransaction test succeeded\\nRunning transaction\\n Installing : 1:perl-Error-0.17020-2.el7.noarch 1\/5 \\n Installing : libgnome-keyring-3.8.0-3.el7.x86_64 2\/5 \\n Installing : perl-TermReadKey-2.30-20.el7.x86_64 3\/5 \\n Installing : git-1.8.3.1-6.el7_2.1.x86_64 4\/5 \\n Installing : perl-Git-1.8.3.1-6.el7_2.1.noarch 5\/5 \\n Verifying : perl-Git-1.8.3.1-6.el7_2.1.noarch 1\/5 \\n Verifying : perl-TermReadKey-2.30-20.el7.x86_64 2\/5 \\n Verifying : libgnome-keyring-3.8.0-3.el7.x86_64 3\/5 \\n Verifying : 1:perl-Error-0.17020-2.el7.noarch 4\/5 \\n Verifying : git-1.8.3.1-6.el7_2.1.x86_64 5\/5 \\n\\nInstalled:\\n git.x86_64 0:1.8.3.1-6.el7_2.1 \\n\\nDependency Installed:\\n libgnome-keyring.x86_64 0:3.8.0-3.el7 perl-Error.noarch 1:0.17020-2.el7 \\n perl-Git.noarch 0:1.8.3.1-6.el7_2.1 perl-TermReadKey.x86_64 0:2.30-20.el7 \\n\\nComplete!\\n\u201d<br \/>\n]<br \/>\n}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ansible-palybooks<\/p>\n<p>root@controller:~$ ssh-keygen Generating public\/private rsa key pair. Enter file in which to save the key (\/home\/root\/.ssh\/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in \/home\/root\/.ssh\/id_rsa. Your public key has been saved in \/home\/root\/.ssh\/id_rsa.pub. The key fingerprint is: 33:b8:4d:8f:95:bc:ed:1a:12:f3:6c:09:9f:52:23:d0 root@controller The key\u2019s randomart image is: +\u2013[ RSA [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[91],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7341"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7341"}],"version-history":[{"count":1,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7341\/revisions"}],"predecessor-version":[{"id":7342,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7341\/revisions\/7342"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7341"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7341"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}