标签:ansible
CentOS 7 x86_64 Minimal
配置网络:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
NAME=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static IPADDR=172.16.4.243 GATEWAY=172.16.4.254 NETMASK=255.255.255.0 DNS1=114.114.114.114
systemctl restart network
安装 ansible:
easy_install simplejson easy_install pip yum install gcc python-devel easy_install ansible pip list
自动把远程主机的公钥加入known_hosts:
vi /etc/ssh/ssh_config
StrictHostKeyChecking no
systemctl reload sshd
设置无密码ssh访问远程主机:
ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.4.247
编辑远程主机列表:
vi ~/hosts
172.16.4.247
测试远程主机的运行状态:
ansible all -i ~/hosts -m ping
YUM安装软件:
ansible ‘~.*247‘ -i ~/hosts -m yum -a ‘name=libselinux-python state=present‘
复制文件到远程主机并执行:
ansible ‘~.*247‘ -i ~/hosts -m copy -a ‘src=test.sh dest=/root‘ ansible ‘~.*247‘ -i ~/hosts -a ‘bash test.sh‘
ansible api example:
#!/usr/bin/python import ansible.runner import sys # construct the ansible runner and execute on all hosts results = ansible.runner.Runner( host_list=‘/root/hosts‘, pattern=‘*‘, forks=10, module_name=‘command‘, module_args=‘which systemctl‘, ).run() if results is None: print "No hosts found" sys.exit(1) print "\033[32mUP ***********\033[0m" for (hostname, result) in results[‘contacted‘].items(): if not ‘failed‘ in result: if len(result[‘stdout‘]): print "%s >>>stdout: %s" % (hostname, result[‘stdout‘]) if len(result[‘stderr‘]): print "%s >>>stderr: %s" % (hostname, result[‘stderr‘]) print "\033[31mFAILED *******\033[0m" for (hostname, result) in results[‘contacted‘].items(): if ‘failed‘ in result: print "%s >>> %s" % (hostname, result[‘msg‘]) print "\033[33mDOWN *********\033[0m" for (hostname, result) in results[‘dark‘].items(): print "%s >>> %s" % (hostname, result)
本文出自 “启程的Linux博客” 博客,转载请与作者联系!
标签:ansible
原文地址:http://qicheng0211.blog.51cto.com/3958621/1614369