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

[经验分享] Ansible配置及使用

[复制链接]

尚未签到

发表于 2018-7-29 12:34:31 | 显示全部楼层 |阅读模式
  Ansible特点

  •   基于python语言开发
  •   不需要安装客户端,通过sshd通信
  •   基于模块工作,模块支持多种语言开发
  •   支持编写yaml格式的playbook,配置文件缩进2行
  •   支持sudo
  •   提供UI,流量器图形化 www.ansible.com/tower
  •   开源UI https://gitub.com/alaxli/ansible_ui
  一、Ansible安装配置
  1. 环境
  master:172.16.115.157
  agent:172.16.115.202
  2. 服务端安装ansible,客户端无需安装,关闭selinux
  setenforce 0
  yum install -y epel-release
  yum install -y ansible
  yum install -y openssl-clients
  3. 服务端生成密钥对,目录/root/.ssh/
  ssh-keygen -t rsa   //无需设置单独密码,生成公钥和秘钥id_rsa  id_rsa.pub
  4. 将服务端公钥内容放到客户机和本机认证文件中,授600权限
  scp /root/.ssh/id-rsa.pub   ip:/root/.ssh/authorized_keys
  cat /root/.ssh/id-rsa.pub >>/root/.ssh/authorized_keys  // ssh 127.0.0.1
  chmod 600 /root/.ssh/authorized_keys
  5. 修改ansible配置文件/etc/ansible/hosts,添加组以及组内IP
  [testhost]             #自定义主机组名字
  172.16.115.157     #组内机器ip或者机器域名(需先配置好/etc/hosts)
  127.0.0.1
  二、命令模块使用
  1. Ansible文档使用
  ansible-doc -l        # 列出所有模块
  ansible-doc cron   # 查看指定模块文档
  2. ping命令模块
  ansible testhost -m ping  #测试机器是否在线
  3. command命令模块
  ansible testhost -m command -a 'w'              #批量执行命令;-m 后面跟模块名;-a 跟命令
  ansible 172.16.115.202 -m command -a 'w'   #单独执行命令
  4. shell命令模块
  说明:shell包含command,并且支持管道和远程执行脚本
  ansible testhost -m -a 'w'
  注:可能用到的扩展包:yum install -y libselinux-python
  5. copy命令模块-拷贝目录和文件
  说明:可同时指定用户属主和权限,源目录拷贝到目标目录下面去,如果目标目录不存在,则会自动创建
  ansible master.huangzp.com -m copy -a "src=/etc/ansible dest=/tmp/ansibletest owner=root group=root mode=0755"
  ansible master.huangzp.com -m copy -a "src=/etc/passwd dest=/tmp/1.txt"
  6. cron命令模块-添加和删除计任务
  说明:name计划名称,job计划动作
  ansible testhost -m -a "name='test_cron' job='/bin/touch /tmp/ansible_test02.txt day='1-30' weekday='4'"
  ansible testhost -m cron -a "name='test_cron' state='absent'"
  注:分钟minute  小时hour  日期day  月份month  周weekday
  7. yum命令模块-安装rpm包
  说明:rpm需写全称(实际,远程执行shell命令更方便),可以填写state=installed
  ansible testhost -m yum -a "name=iftop"
  注:双引号中没有单引号
  8. service命令模块-管理rpm服务
  说明:state状态可以为:启动start、停止stop等;enabled为开机启动
  ansible testhost -m service -a "name=iftop state=started enabled=yes"
  三、ansible playbook
  相当于将各命令模块内容写进配置文件中,然后集中执行,类似于shell脚本。例如:实际生产中,需批量管理很多机器,yum安装,管理配置文件、服务等
  1. ansible配置文件格式
  vim /etc/ansible/test.yml   # 以.yml结尾
--- #固定格式开头  
- hosts: testhost #目标主机列表,可以是单台主机
  
   remote_user: root #指定用什么用户登录远程主机执行操作
  
   tasks:
  
   - name: test_playbook #任务描述,会打印出来
  
    shell: /bin/touch /tmp/ansible_test03.txt #具体任务
DSC0000.png

  2. 执行ansible playbook
  ansible-playbook test.yml
DSC0001.png

  3. 搜集机器上系统相关信息,用到setup模块
  说明:当管理较多不同系统的主机时,可以根据获取到的不同类型执行对应操作,如Ubuntu,使用apt-get
  ansible testhost -m setup
  4. ansible变量-user命令模块
  vim /etc/ansible/create_user.yml
---  
- name: create_user
  
  hosts: agent.huangzp.com
  
  gather_facts: false #是否启用setup命令模块获取的信息
  
  vars:
  
   - user: "test" #var指定user为变量,test为变量的值,需引号
  
  tasks:
  
      - name: create user
  
        user: name="{{ user }}" #name为user命令模块的参数,{{ user }}变量表示形式
DSC0002.png

DSC0003.png

  5. file命令模块-ansible循环
  vim /etc/ansible/loop.yml
---  
- hosts: testhost
  
  user: root
  
  tasks:
  
    - name: change mode for file
  
     file: path=/tmp/{{ item }} mode=600 owner=root group=root
  
     with_items:
  
      - 1.txt
  
      - 2.txt
DSC0004.png

DSC0005.png

  6. when命令模块-ansible条件判断
  vim /etc/ansible/when.yml
---  
- hosts: testhost
  
  user: root
  
  gather_facts: True
  
  tasks:
  
   - name: use when
  
    shell: /bin/touch /tmp/when.txt
  
    when: facter_ipaddress == "172.16.115.202"
DSC0006.png

DSC0007.png

DSC0008.png

  7. handlers命令模块-条件判断
  vim /etc/ansible/handlers.yml
  说明:只有copy模块执行后,再执行Handlers,与的关系。如果客户机上已经有一个2.txt文件,且内容和服务机上的passwd一致,判断之后,这一步不执行,从而也不会调用test handlers;非常适合同步配置文件,比如:如果配置文件更改了就重启服务,如果没有更改就不重启
---  
- hosts: agent.huangzp.com
  
  name: handlers test
  
  user: root
  
  tasks:
  
   - name: copy file
  
    copy: src=/etc/passwd dest=/tmp/2.txt
  
    notify: test handlers
  
  handlers:
  
    - name: test handlers
  
     shell: echo "test" >> /tmp/2.txt
DSC0009.png DSC00010.png



  注:编辑agent.huangzp.com上/tmp/2.txt去掉test后,master上再次执行ansible-playbook handlers.yml 则不会再执行echo “test” >> /tmp/2.txt

运维网声明 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-543051-1-1.html 上篇帖子: Linux Ansible详解 下篇帖子: ansible实战-nginx安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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