ansible基础 -- 常用模块

一:运行shell命令(command,shell)

ansible默认使用command模块运行,但该模块不支持shell变量和管道,此时则使用shell模块运行命令

  • 在所有机器上运行ifconfig命令
ansible all -a "ifconfig"
  • 在所有机器上含有IP的行
ansible all -m shell -a "ifconfig | grep 'inet addr'"
  • 重启所有机器,每次重启2台(默认并发5)
ansible all -a "reboot" -f 2
  • 以test用户在所有机器上运行echo命令
ansible all -a "echo 'hello world'" -u test
  • 以test用户在所有机器上运行sudo命令(如果有密码用--ask-sudo-pass参数)
ansible all -a "iptables -nL" -u test --sudo [--ask-sudo-pass]

二:传输文件(copy)

  • 将本地hosts文件发送到所有主机的/home下
ansible all -m copy -a "src=/etc/hosts dest=/home"

三:更改文件权限(file)

  • 将远程主机的/home/hosts文件权限设置为600
ansible all -m file -a "dest=/home/hosts mode=600"
  • 将远程主机的/home/hosts文件用户和组设置为www
ansible all -m file -a "dest=/home/hosts owner=www group=www"
  • 在远程主机创建目录,类似mkdir -p
ansible all -m file -a "dest=/home/a/b/c owner=www group=www state=directory"
  • 删除文件或目录
ansible all -m file -a "dest=/home/a state=absent"

四:软件包管理(apt,yum)

  • 确保nginx已经安装了,但不更新
ansible all -m yum -a "name=nginx state=present"
  • 安装软件包到一个指定的版本
ansible all -m yum -a "name=nginx1.8 state=present"
  • 确保安装的软件包是最新的
ansible all -m yum -a "name=nginx state=latest"
  • 确保软件包没有安装,(卸载)
ansible all -m yum -a "name=nginx state=absent"

五:用户和用户组(user,group)

  • 创建用户组test
ansible all -m group -a "name=test gid=1000"
  • 创建用户名为foo,uid为1000,用户组为test的用户
ansible all -m user -a "name=foo uid=1000 group=test"
  • 删除用户foo
ansible all -m user -a "name=foo state=absent"

六:代码发布(git)

  • 从git仓库拉去代码
ansible all -m git -a "repo=https://github.com/xxx/xxx.git dest=/var/www/webapps version=HEAD"

七:服务管理(service)

  • 确保所有主机的nginx是启动的
ansible all -m service -a "name=nginx state=started"
  • 重启所有nginx
ansible all -m service -a "name=nginx state=restarted"
  • 关闭所有nginx
ansible all -m service -a "name=nginx state=stoped"

八:计划任务(cron)

  • 所有节点每3分钟更新时间
ansible all -m cron -a 'name="ntpdate time" minute=*/5 hour=* day=* mouth=* weekday=* job="/usr/sbin/ntpdate time.windows.com"'
  • 以www用户运行计划任务
ansible all -m  cron -a 'name="ntpdate time" minute=*/5 hour=* day=* mouth=* weekday=* job="/usr/sbin/ntpdate time.windows.com" user=www'
  • 删除计划任务
ansible all -m cron -a 'name="ntpdate time" state=absent'

九:运行脚本(script)

  • 在远程主机运行/home/ansible.sh脚本(ansible.sh文件在ansible主控机上)
ansible all -m script -a "/home/ansible.sh"

十:下载文件(get_url)

  • 将http://www.baidu.com/favicon.ico文件下载到/tmp下
ansible all -m get_url -a "url=http://www.baidu.com/favicon.ico dest=/tmp"

十一:文件推送或拉取(synchronize)

  • delete=yes 使两边的内容一样

  • compress=yes 开启压缩,默认开启

  • --exclude=.git 忽略同步.git结尾的文件

  • mode=pull 拉取,默认为推送

  • 将主控机的/home/test.txt文件推送到远程主机的/tmp下

ansible all -m synchronize -a "src=/home/test.txt dest=/tmp compress=yes"
  • 将远程主机的/home/abc.txt拉取到主控机的root目录
ansible all -m synchronize -a "mode=pull src=/hoome/abc.txt dest=/root"

十二:收集系统信息(setup)

  • 收集主机所有信息
ansible all -m setup
  • 收集主机所有信息,并根据主机名存到文件中
ansible all -m setup --tree /tmp/facts
  • 收集内存相关的信息
ansible all -m setup -a "filter=ansible_*_mb"
  • 收集网卡相关的信息
ansible all -m setup -a "filter=ansible_eth[0-2]"

你可能感兴趣的:(ansible基础 -- 常用模块)