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

[经验分享] ansible安装部署和配置、常用模块整理

[复制链接]

尚未签到

发表于 2018-7-29 07:37:46 | 显示全部楼层 |阅读模式
今天心情不错~~~~第25个生日了,又遇昨晚百年难得一见的蓝月亮,所以昨晚连夜整理了文档,
会分为两部分发出去,ansible批量化部署在工作中是非常实用,建议呢 整理大量常用模块去练习
1.1.1 ansible软件介绍
  1. ansible是一个基于python开发的自动化运维工具!(saltstack)
  2. 其功能的实现是基础SSH远程连接服务的
  3. ansible可以实现批量系统配置、批量软件部署、批量文件拷贝、批量运行命令等功能
1.1.2 ansible软件相关参考链接信息
  http://docs.ansible.com/ansible/intro_installation.html
  http://www.ansible.com.cn/
  http://docs.ansible.com/modules_by_category.html
  http://www.ansible.cn/docs/
1.1.3 ansible软件特点
  1. 不需要单独安装客户端,基于ssh服务
  2. 不需要安装服务端
  3. 需要依靠大量的模块实现批量部署
  4. 配置文件/etc/ansible/ansible.cfg
1.1.4 ansible软件安装部署和配置
  PS:为了安全,尽量不要配置外网
  首先保证:可以免秘钥登录被管理端
  1. 管理端安装软件:
  yum install ansible -y
  2. 被管理端安装软件:
  yum install libselinux-python -y
  PS:如果关闭selinux,那么被管理端可以不安装(建议安装)
3. ansible软件管理配置文件
  vim /etc/ansible/hosts    #定义ansible可管理的主机
  [george]
  172.16.1.7
  172.16.1.31
  172.16.1.41
4. 进行ansible软件批量管理:
  ansible george -m command -a "uptime"
  PS: 查看的是george主机组,模块为command,的主机负载信息
  george  #主机组
  -m  #指定模块参数(command为默认模块,不写也可以)
  command #模块名称
  -a  #指定利用模块执行的动作参数,-a后面的是要执行的命令
  uptime #批量执行的命令
DSC0000.jpg

1.1.5 ansible软件命令常用参数
  -k :以交互方式输入密码,进行远程管理
  -a :指定应用模块的相应参数信息
  -m  :指定应该什么模块(默认为command模块)
1.1.6 ansible模块总结
  参考ansible官方:http://docs.ansible.com/ansible/latest/modules_by_category.html
  进入all modules中,使用google浏览器,ctrl+f根据查找模块名查找对应信息
  ansible执行命令后输出信息中:
  绿色——表示查询,或者没有发生任何改变
  红色——表示命令操作出现异常
  屎×××——对远程主机做了相应改动
  粉色——对操作提出建议或忠告
ansible系统命令帮助文档查看方法:
ansible-doc -l     --- 列出所有可用的模块信息
ansible-doc -s cron  --- 查看指定模块的参数信息
  1. command模块实践:(默认模块
  ansible george -m command -a "ifconfig"
  #批量显示远程主机的网卡信息
  ansible george -m commadn -a "chair=/tmp touch kai.txt"
  #批量切换到远程主机的/tmp目录下,创建kai.txt这个文件
  ansible george -m command -a "creates=/tmp/kai touch /tmp/kai"
  #批量判断远程主机/tmp下有没有kai这个文件,如果有就skip,没有就执行后面的命令
  ansible george -m command -a "removes=/tmp/kai.txt touch /tmp/123.txt"
  #批量判断远程主机/tmp下有没有kai这个文件,如果有就执行后面的命令, 没有就skip
  ansible george -m command -a "ls -l"
  #free_from(默认参数)可以输入任何系统命令信息,但是不包含一些特殊环境变量和特殊符号信息,如:<>,|;&
  2. ping模块实践
  [root@m01 scripts]# ansible george -m ping
  172.16.1.31 | SUCCESS => {
  &quot;changed&quot;: false,
  &quot;ping&quot;: &quot;pong&quot;
  }
  172.16.1.7 | SUCCESS => {
  &quot;changed&quot;: false,
  &quot;ping&quot;: &quot;pong&quot;
  }
  #返回pong,说明可以登录SSH连接,这里ping但不是测试网络连通性的,用于验证能否登录SSH连接,在查  看是否满足python的支持, 属于system模块
  3.debug调试模块实践
  [root@m01 scripts]# ansible george -m debug
  172.16.1.31 | SUCCESS => {
  &quot;changed&quot;: false,
  &quot;msg&quot;: &quot;Hello world!&quot;
  }
  172.16.1.7 | SUCCESS => {
  &quot;changed&quot;: false,
  &quot;msg&quot;: &quot;Hello world!&quot;
  }
  #此模块在执行过程中打印语句,对于调试变量或表达式非常有用,而不一定会停止播放。与“When:”指令 一起调试非常有用。
  4.  copy模块实践
  1)copy参数src
  例: ansible george -m copy -a &quot;src=/etc/hosts dest=/tmp/&quot;
  #将本机/etc/hosts文件复制到远程主机的/tmp目录下(如果/tmp下已有同名hosts,那么会被覆盖)
  例: ansible george -m copy -a &quot;src=/etc/hosts dest=/tmp/dir/&quot;
  #如果远程主机没有dir目录,那么会创建dir目录
  例: ansible george -m copy -a &quot;src=/etc/hosts  dest=/tmp/1/2/3/4/&quot;
  #但传输文件时,如果上级目录不存在,则不会创  建,传输就无法成功
  例: ansible george -m copy -a &quot;src=/tmp dest=/tmp/1/2/3/4&quot;
  #传输目录时,如果远程主机目录不存在,传输时可以创建多层目录,
  #如果传输的是目录本身及下面内容,后面不要加/
  例: ansible george -m copy -a &quot;src=/tmp dest=/tmp/1/2/3/4&quot;
  #如果传输的是目录下面的内容,后面必须加/
  例: ansible george -m copy -a &quot;remote_src=true src=/etc/hosts dest=/tmp/1/2/&quot;
  #批量操作远程主机,对他们本机上的文件进行本地操作
  #设置为true时(默认为flase),不支持递归复制
  2)copy参数backup=yes
  ansible george -m copy -a &quot;src=/etc/hosts dest=/etc/ backup=yes&quot;
  # 分发文件时,如果与远程主机下hosts文件内容不一致,那么会备份源文件为&quot;hosts.5714...以时间戳命名   &quot;,   在修改hosts源文件的内容
  #不输入默认backup=no,就是不备份,会覆盖源文件
  3)copy参数mode、owner、group
  ansible george -m copy -a &quot;src=/etc/hosts dest=/tmp/ mode=0600 owner=george group=george&quot;
  #改变文件的权限为0600,所有者和属组为george
  4) copy参数force
  ansible george -m copy -a &quot;src=/etc/hosts dest=/tmp/ force=yes&quot;
  #默认为forec=yes,如果和远程主机信息不一致,会覆盖
  #如果force=no,那么远程主机同名文件不会做改变
  5)copy参数content
  ansible george -m copy -a &quot;content=123123 dest=/tmp/hosts&quot;
  #写入信息到/tmp/ hosts中会把源内容覆盖掉,谨慎操作,只能添加少量的信息
  #添加多量的,可以用template模块
  5. shell模块实践
  ansible george -m shell -a &quot;hostname;hostname -i&quot;
  # 支持特殊符号,-a里面可接多个名,用分号分割
  测试:用shell执行一个脚本很麻烦的,用script执行
  1)推送脚本过去,并授权
  ansible george -m copy -a &quot;src=/tmp/test.sh dest=/tmp mode=+x&quot;
  2)运行脚本
  ansible george -m shell -a &quot;/tmp/test.sh&quot;
  6. script模块实践
  ansible george -m script -a &quot;/server/scritps/keepalived.sh&quot;
  #将本地脚本中的信息,在远程主机上执行
  7. setup模块实践
  ansible george -m setup
  #显示远程主机的所有信息(后面加-v显示详细信息)
  #提取IP、或架构信息等,X86来判断主机架构,安装合适软件
  ansible georhe -m setup -v
  #主要用于解决一些错误:如远程主机hang住了,ansible会输出少量信息(最多-vvvv)
  8. yum模块实践
  ansible george -m yum -a &quot;name=iotop state=installed&quot;
  #批量使用yum安装软件iotop
  9. service模块实践
  ansible george -m service -a &quot;name=crond state=stopped enable=no&quot; #stopped是2个p
  #临时停止crond服务,取消开机自启动(相反:state=started enable=yes)
10.file模块实践                     #修改文件或目录属性信息,用于创建文件或目录,也可以用mode、owner、group定义文件或目录的权限信息
  1)path参数
  ansible george -m file &quot;path=/tmp/ state=directory mode=0644&quot;
  #指定路径,是dest,name的别名,作用一样
  2)state参数
  ansible george -m file -a &quot;dest=/opt/dir_01/ state=directory&quot;
  #创建目录为dir_01
  ansible george -m file -a &quot;dest=/opt/file_01 state=touch&quot;
  #创建文件为file_01
  ansible george -m file -a &quot;dest=/opt/file_01 state=absent&quot;
  #删除文件file_01
  ansible george -m file -a &quot;src=/opt/hosts dest=/opt/hosts_link state=link&quot;
  #创建符号链接,基于本机有源文件
  11. cron模块实践                      #定时任务模块
  * * * * *  /bin/sh /server/scripts/test.sh &>/dev/null
  minute                 # Minute when the job should run ( 0-59, *, */2, etc )
  hour                   # Hour when the job should run ( 0-23, *, */2, etc )
  day                    # Day of the month the job should run ( 1-31, *, */2, etc )
  month                  # Month of the year the job should run ( 1-12, *, */2, etc )
  weekday                # Day of the week that the job should run ( 0-6 for Sunday-Saturday, *, etc )
  job                    # 定义定时任务与要做什么事
  name       # 给定时任务加一个备注,避免创建出多个重复的定时任务(根据定时任务备份判断        是否生成一个新的定时任务)
  stat       #若设置为present,表示创建定时任务,若设置为absent,表示删除指定定时任务
  只能管理自己创建的定时任务,本来有的管理不了
  disabled      #disable=yes注释掉定时任务(不生效),disable=no解除注释定时任务(生效)
  ansible george -m cron -a &quot;name='backup servcie' minute=*/5 job='/usr/sbin/ntpdate   time.nist.gov >/dev/null 2>&1'&quot;
  #创建定时任务
  ansible george -m cron -a &quot;name=`backup service` state=absent&quot;
  #删除定时任务
  ansible george -m cron -a &quot;name=dancy01 minute=*/5 job='/usr/sbin/ntpdate time.nist.gov >/dev/null  2>&1' disabled=yes&quot;
  #注释掉定时任务,反之取消注释
  12.mount模块实践
  ansible george -m mount -a &quot;state=mounted src=172.16.1.31:/data path=/data fstype=nfs&quot;
  src   #要被挂载的目录或文件
  path  #指定挂载点的路径
  fstype   #指定挂载时的文件系统类型
  opts  #在挂载时,指定挂载参数信息
  state  #state=mounted,在fstab文件中的备份将被激活挂载或适当配置,如果指定mounted的挂载挂载点不存在,会创建
  #state=unmounted,设备将被卸载不会改变fstab文件中的信息
  #state=absent和state=present,只处理fatab,但不影响目录的挂载
  小伙伴们可以关注我的微信公众号:linux运维菜鸟之旅
DSC0001.jpg

  关注“中国电信天津网厅”公众号,首次绑定可免费领2G流量,为你的学习提供流量!
DSC0002.jpg

运维网声明 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-542754-1-1.html 上篇帖子: ansible 基本操作(初试) 下篇帖子: ansible批量部署nginx、mysql、tomcat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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