[原]Ansible简易使用

ansible是实现的基于ssh的自动化运维工具(管理节点需要与被管理节点SSH可通,无论是密码验证还是key验证等均可),相对于slat、putty之类传统的IT自动化工具来讲优势在于无需在每台要管理的机器上部署客户端,使用起来简易、灵活,不仅支持ad-hoc命令同时还支持play book。一些简单的批量作业通过andible来执行,非常方便。当然,负责的批零作业对于ansible来说也完全不是问题。

这里主要列一些基本配置、常用的模块和常见操作,更为高级的配置、用法以及playbook的使用可参见官方手册:

ansible --help

ansible -i hosts all -m ping -f 20 --output=result

其中 -i指定要读取的主机列表文件,最简单的主机列表文件可只包含主机名列表或者IP地址列表,复杂一点的可以对列表中的主机进行分组,更复杂的可在列表文件中指定其他各种参数。这里只就最简单的情况进行说明。若不指定-i参数则默认读取 /etc/ansible/hosts 。

all参数说明要读取列表中所有主机,若只读取部分主机可单独列出以逗号隔开,要读取某个分组下的主机,则这里可以指定分组名:

ansible -i hosts all -m ping

ansible -i hosts h1,h2 -m ping

ansible -i hosts group1 -m ping

-m 指明要使用的模块名,这里使用ping模块来测试ansible是否可达列表中额主机

-f 指明线程数,默认5个并发。

--output 指明输出文件,不指定的话输出到控制台。

ansible -i hosts all -a who

命令没有使用-m参数指定模块,这里实际上使用了默认的command模块 -a指定了使用该模块是的参数等价于

ansible -i hosts all -m command -a who

其他模块

在远程主机执行脚本

ansible -i hosts all -m script -a mha_stop.sh

#在远程主机执行shell命令(与command模块的区别是支持管道和重定向)

ansible -i hosts all -m shell -a " cat /tmp/authorized_keys >> /root/.ssh/authorized_keys"

#往远程主机拷贝文件

ansible -i hosts all -m copy -a "src=/etc/hosts dest=/tmp/hosts mode=600 owner=mdehaan group=mdehaan"

#从远程主机拉取文件

ansible -i hosts all -m fetch -a  "src=/etc/hosts dest=/tmp/hosts mode=600 owner=mdehaan group=mdehaan"

#更改远程文件属性

ansible -i hosts all -m file -a "dest=/srv/foo/a.txt mode=600"

ansible -i hosts all -m file -a "dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan"

ansible -i hosts all -m file -a "dest=/path/to/c mode=755 owner=mdehaan group=mdehaan state=directory"

ansible -i hosts all -m file -a "dest=/path/to/c state=absent"

#在远程助主机安装/删除/更新包

ansible -i hosts all -m yum -a "name=java-1.8.0-openjdk.x86_64 state=present"

ansible -i hosts all -m yum -a "name=java-1.8.0-openjdk.x86_64 state=absent"

ansible -i hosts all -m yum -a "name=java-1.8.0-openjdk.x86_64 state=latest"

#在远程主机启/停服务

ansible -i hosts all -f 50 -m service -a "name=filebeat state=started"

ansible -i hosts all -f 50 -m service -a "name=filebeat state=restarted"

ansible -i hosts all -f 50 -m service -a "name=filebeat state=stopped"

#在远程主机部署/删除cron任务

ansible -i hosts all -m cron -a name="a job for reboot" special_time=reboot job="/some/job.sh"

ansible -i hosts all -m cron -a backup="True" name="test" minute="0" hour="2" job="ls -alh > /dev/null"

ansible -i hosts all -m cron -a name="test" state=absent

更多模块及playbook使用方式请参见官方手册

http://docs.ansible.com/

  • 版权声明: 本文源自互联网, 于3个月前,由整理发表,共 2123字。
  • 原文链接:点此查看原文