设为首页 收藏本站
查看: 870|回复: 0

[经验分享] ansible学习1

[复制链接]

尚未签到

发表于 2018-7-29 11:31:55 | 显示全部楼层 |阅读模式
1.command  命令模块,默认模块,用于在远程执行命令  -a 'COMMAND'
  
#ansible node2 -m command -a "date"
  

  

  
2.user  管理用户
  -a 'name= state={present|absent} system=  uid='
  
                name=:指明用户名  password=加密串
  
#ansible node2 -m user -a 'name=mysql uid=306 system=yes group=mysql'
  

  

  
3.group
  -a 'name= gid= state= system='
  state:present,absent
  
#ansible node2 -m group -a 'name=mysql gid=306 system=yes state=present '
  

  

  
4.cron周期性任务计划模块
  -a 'name= minute= hour= day= month= weekday= job= user= state='
  
#ansible node2 -m cron -a 'minute="*/10" job="/bin/echo hahaha" name="test" state="present" '
  

  

  
5.copy(复制文件)
  -a 'dest= src= mode= owner= group=   content='
  
                src=:本地源文件路径(可以相对和绝对路径)
  dest=:目标文件路径(绝对路径)
  content=: 直接生成文件内容,取代src(不能与src同时存在)
  force: 当设置为yes时,如果目标主机存在该文件,但内容不同,会强制覆盖。默认为yes
  
                backup: 在覆盖之前备份源文件,yes/no
  
#ansible node2 -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible owner=root mode=640 '
  
#ansible node2 -m copy -a 'content="Hello\n  hello\n " dest=/tmp/hello.ansible '
  

  

  
6.file(设置文件属性)
  -a 'path= mode= owner= group= state={directory|link|present|absent} src='
  path=:指定文件路径,可以使用name或dest来替换
  src=:被链接的源文件路径,只应用于 state=link 的情况
  创建文件的链接:
  src=:指定源文件   path=:指定链接文件
  state=:后面接文件的各种状态,如directory, link, hard, file及absent(删除)
  
                  directory: 如果目录不存在,则创建目录
  
                  file: 即使文件不存在,也不会被创建
  
                  absent: 删除目录、文件或链接文件
  
                  touch: 如果文件不存在,则会创建一个新文件,如果存在,则更新其时间戳
  
                  link: 创建软链接
  
                  hard:硬链接
  

  
#ansible node2 -m file -a 'owner=mysql group=mysql mode=644 path="/tmp/fstab.ansible"'
  
#ansible node2 -m file -a ' path="/tmp/fstab.link"  src="/tmp/fstab.ansible" state=link '
  

  
7.ping 测试远程主机能否能连接,没有参数
  
#ansible node2 -m ping
  

  

  
8.yum(安装或卸载程序包)
  -a 'name= state={present|latest|absent}'
  name=指明要安装的软件包,可以带上版本号
  
#ansible node2 -m yum -a 'name=zsh  state=present'
  

  

  
9.service(指定程序运行状态)
  -a 'name= state={started|stopped|restarted} enabled='
  enabled=:是否开机自启,取值为true或false
  state=现在状态
  
#ansible node2 -m service -a 'enable=true name=httpd state=started '
  

  

  
10.shell (管道,变量 复杂命令)
  -a 'COMMAND'
  
#ansible node2 -m shell -a 'echo 123456 | passwd --stdin user1 '
  

  

  
11.script(本地脚本,复制到远程主机上并运行)
  -a '/path/to/script'
  
#ansible node2 -m script -a '/tmp/test.sh'
  

  

  
12.setup(收集远程主机的facts)
  
ansible-doc -s setup
  
#ansible node2 -m setup
  

  
playbook运行时,会自动调用setup模块收集远程主机的相关信息(称为facts,如操作系统版本、ip地址、cpu数量等),这些信息保存于变量中,可在playbook中引用。
  

  
我们也可直接使用ansible命令直接获取这些变量信息:
  
ansible all -m setup [-a 'filter=ansible_eth[0-2]']
  
       filter:过滤器,表示只返回与指定shell风格通配符匹配的变量信息
  
ansible all -m setup --tree /tmp/facts
  
       --tree:表示将收集的facs以树状的结构输入到指定文件中
  

  
[root@node1 ~]#  ansible node2 -m setup -a 'filter=ansible_fqdn'
  
192.168.193.129 | SUCCESS => {
  
    "ansible_facts": {
  
        "ansible_fqdn": "node2"
  
    },
  
    "changed": false
  
}
  

  

  
13.template
  
template是使用了Jinjia2格式作为文件模版,进行文档内变量的替换的模块。它的每次使用都会被ansible标记为”changed”状态。
  
      举个例子:
  
         vim /root/httpd.conf
  
           ...
  
           ServerName {{ ansible_fqdn }}
  
#ansible node2 -m template -a 'src=/root/httpd.conf desc=/etc/httpd/conf/httpd.conf
  

  
当/root/httpd.conf文件被复制到第一个主机时,ServerName的值被替换成第一个主机的ansible_fqdn的值node2,而被复制到第二个主机时,ServerName的值会被替换成node3
  

  

  
14.synchronize
  
该模块会调用rsync命令,用于将ansible机器的指定目录推送到客户机器 的指定目录下
  
#ansible node2 -m synchronize -a 'src=/usr/local/src/ dest=/usr/local/src/ delete=yes compress=yes'
  

  
15.get_url
  
常用模块,可以实现在远程主机上下载url到本地
  
#ansible node2 -m get_url -a 'url=http://xxx.com dest=/tmp'
  

  
更多模块,参考http://www.361way.com/ansible-modules/4415.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-542970-1-1.html 上篇帖子: Linux下的自动化运维ansible工具 下篇帖子: 用ansible实现自动化部署的步骤
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表