Ansible详解

51 篇文章 0 订阅
1 篇文章 0 订阅
Usage: ansible <host-pattern> [options]
    Options:
     -m MODULE\_NAME, --module-name=MODULE\_NAME     要执行的模块,默认为 command
    -a MODULE_ARGS, --args=MODULE_ARGS      模块的参数
    -u REMOTE_USER, --user=REMOTE_USER ssh      连接的用户名,默认用 root,ansible.cfg 中可以配置
    -k, --ask-pass      提示输入 ssh 登录密码,当使用密码验证登录的时候用
    -s, --sudo      sudo 运行
    -U SUDO_USER, --sudo-user=SUDO_USER     sudo 到哪个用户,默认为 root
    -K, --ask-sudo-pass     提示输入 sudo 密码,当不是 NOPASSWD 模式时使用
    -B SECONDS, --background=SECONDS            run asynchronously, failing after X seconds(default=N/A)
    -P POLL_INTERVAL, --poll=POLL_INTERVAL      set the poll interval if using
    -B (default=15)
    -C, --check     只是测试一下会改变什么内容,不会真正去执行
    -c CONNECTION   连接类型(default=smart)
    -f FORKS, --forks=FORKS     fork 多少个进程并发处理,默认 5
    -i INVENTORY, --inventory-file=INVENTORY        指定 hosts 文件路径,默认 default    =/etc/ansible/hosts
    -l SUBSET, --limit=SUBSET       指定一个 pattern,对<host_pattern>已经匹配的主机中再过滤一次
    --list-hosts        只打印有哪些主机会执行这个 playbook 文件:不是实际执行该 playbook
    -M MODULE_PATH, --module-path=MODULE_PATH       要执行的模块的路径,默认为/usr/share/ansible/
    -o, --one-line      压缩输出,摘要输出
    --private-key=PRIVATE_KEY_FILE      私钥路径
    -T TIMEOUT, --timeout=TIMEOUT   ssh 连接超时时间,默认 10 秒
    -t TREE, --tree=TREE            日志输出到该目录,日志文件名会以主机名命名
    -v, --verbose   verbose mode (-vvv for more, -vvvv to enable connection debugging)
copy模块:
    目的:把主控端/root目录下的a.sh文件拷贝到到指定节点上
    命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/ owner=root group=root mode=0755'
file模块:
    目的:更改指定节点上/tmp/t.sh的权限为755,属主和属组为root
    命令:ansible all -m file -a "dest=/tmp/t.sh mode=755 owner=root group=root"
cron模块:
    目的:在指定节点上定义一个计划任务,每隔3分钟到主控端更新一次时间
    命令:ansible all -m cron -a 'name="custom job" minute=\*/3 hour=\* day=\* month=\* weekday=\* job="/usr/sbin/ntpdate 172.16.254.139"'
group模块:
     目的:在所有节点上创建一个组名为nolinux,gid为2014的组
     命令:ansible all -m group -a 'gid=2014 name=nolinux'
user模块:
    目的:在指定节点上创建一个用户名为nolinux,组为nolinux的用户
    命令:ansible 10.1.1.113 -m user -a 'name=nolinux groups=nolinux state=present'
    删除用户
    命令:ansible 10.1.1.113 -m user -a 'name=nolinux state=absent remove=yes'
yum模块:
    目的:在指定节点上安装 apache 服务
    命令:ansible all -m yum -a "state=present name=httpd"
    state=latest=>>安装最新版本
service模块:
    目的:启动指定节点上的 httpd 服务,并让其开机自启动
    命令:ansible 10.1.1.113 -m service -a 'name=httpd state=restarted enabled=yes'
script模块:
    目的:在指定节点上执行/root/a.sh脚本(该脚本是在ansible主控端)
    命令:ansible 10.1.1.113 -m script -a '/root/a.sh'
ping模块:
    目的:检查指定节点机器是否还能连通
    命令:ansible 10.1.1.113 -m ping
command模块:
     目的:在指定节点上运行hostname命令
    命令:ansible 10.1.1.113 -m command -a 'hostname'
raw模块:
    目的:在10.1.1.113节点上运行ifconfig命令
    命令:ansible 10.1.1.113 -m raw-a 'ifconfig|eth0'
get_url模块:
    目的:将http://10.1.1.116/favicon.ico文件下载到指定节点的/tmp目录下
    命令:ansible 10.1.1.113 -m get_url -a 'url=http://10.1.1.116/favicon.ico dest=/tmp'
stat模块:
    目的:获取远程文件状态信息,包括atime、ctime、mtime、md5、uid、gid等信息
    ansible web -m stat -a 'path=/etc/sysctl.conf'
synchronize模块:
    目的:将主控方/root/a目录推送到指定节点的/tmp目录下
    命令:ansible 10.1.1.113 -m synchronize -a 'src=/root/a dest=/tmp/ compress=yes'
    执行效果:
    delete=yes   使两边的内容一样(即以推送方为主)
    compress=yes  开启压缩,默认为开启
    --exclude=.git  忽略同步.git结尾的文件
    mode=pull   更改推送模式为拉取模式
    目的:将10.1.1.113节点的/tmp/a目录拉取到主控节点的/root目录下
    命令:ansible 10.1.1.113 -m synchronize -a 'mode=pull src=/tmp/a dest=/root/'</code></pre>
# 拷贝文件并赋予用户,组,权限
ansible all -m copy -a 'src=~/script/tomcat.sh dest=/opt/admin/backup/ owner=admin group=admin mode=755'
# 利用root统一修改log用户的密码
ansible all -S -R root -m raw -a "echo 'Password' | passwd --stdin log"

# 利用root统一修改制定目录的权限
ansible all -S -R root -m raw -a "chmod 0750 -R /opt/admin"

# 批量添加crontab定时任务
ansible config_dev -m cron -a "name='listen_tomcat' minute='5' user='admin' job='sh /opt/admin/script/listen_tomcat.sh'"
ansible all  -m cron  -a  'name="ban IP of login" minute=* hour=*/2 day=* month=* weekday=* job="sh /opt/admin/script/listen_tomcat.sh"'
ansible all  -m cron  -a  'name="rm_log" minute=* hour=*/6 day=* month=* weekday=* job="sh /opt/admin/script/log.sh"'

# 拷贝文件
ansible config_dev -m copy -a 'src=/opt/admin/script/shell/listen_tomcat.sh dest=/opt/admin/script/ owner=admin group=admin mode=755'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值