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

[经验分享] ansibel安装以及语法分析

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-9-13 09:30:01 | 显示全部楼层 |阅读模式
1
2
3
4
yum install epel-release -y
yum install python-setuptools python-setuptools-devel python-devel sshpass -y
easy_install pip
pip install ansible

使用shell模块案例
1
2
3
ansible -i /etc/ansible/test/hosts mqservers -m shell -a 'echo "export http_proxy=http://192.168.2.11:3128" >> /etc/bashrc'
ansible -i /etc/ansible/test/hosts mqservers -m shell -a 'echo "export https_proxy=http://192.168.2.11:3128" >> /etc/bashrc'
ansible -i /etc/ansible/test/hosts mqservers -m shell -a 'cat /etc/bashrc'



一个硬盘挂载案例

1
2
3
4
ansible tools-backup -m parted -a "device=/dev/xvdb number=1 state=present" -k
ansible tools-backup -m filesystem -a "fstype=ext4 dev=/dev/xvdb1" -k
ansible tools-backup -m file -a "path=/data state=directory mode=0755" -k
ansible tools-backup -m mount -a "path=/data src=/dev/xvdb1 fstype=ext4 state=mounted" -k



1
2
3
cat /etc/ansible/hosts
[tools-backup]
192.168.x.x




shell模块案例分析:
ansible 是命令
-i INVENTOR  中文翻译n. 存货,存货清单;详细目录;财产清册,意思是记录主机财产表
/etc/ansible/test/hosts 是主机财产表
mqservers 是在/etc/ansible/test/hosts表中的名称
-m  MODULE_NAME 模块名
shell shell模块

-a  MODULE_ARGS 模块参数
'echo "export http_proxy=http://192.168.2.11:3128" >> /etc/bashrc' 具体的模块参数命令

一个硬盘挂载案例:
和上面的shell案例差不多,如果没有-i  默认是使用default=/etc/ansible/hosts主机财产表
-m 后面接了不同的参数parted,filesystem,mount等。
-k -ask-pass  要求输入对面主机密码

ansible简明的使用格式
1
2
3
4
5
6
7
ansible <host-pattern> [-f forks] [-m module_name] [-a args]

    host-pattern # 可以是all,或者配置文件中的主机组名
    -f forks  # 指定并行处理的进程数
    -m module # 指定使用的模块,默认模块为command
    -a args   # 指定模块的参数
如果你有多台服务器的话,想并发运行,可以使用-f参数,默认是并发5




查看各模块的使用方法
1
2
3
ansible-doc [options] [modules]  :Show Ansible module documentation
-l 列出所有的ansible模块
-s 列出该模块的相关指令




连接与验证测试
1
ansible -i /etc/ansible/hosts all -m ping




常用的模块:copy、command、service、yum、apt、file、raw、shell、script、cron、user、state、template、

YAML分析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
- hosts: hanodes      #指定要执行任务的主机,可由冒号分隔主机组
  remote_user: root   #指定远程主机上执行任务的用户
  vars:  #定义如下2个变量
    crmsh: crmsh-1.2.6.4.el6.x86_64.rpm
    pssh: pssh-2.3.1-2.el6.x86_64.rpm
  tasks:    #指定需执行的任务列表,每个task都有其name和使用的模块及参数
    - name: test connection
      ping:        #ping模块无需执行参数
      remote_user: jason  #在task中指定远程主机上执行任务的用户
      sudo: yes   #使用sudo在远程主机上执行任务
    - name: corosync installing
      yum: name=corosync state=present
    - name: pacemaker installing          #定义一个软件安装任务
      yum: name=pacemaker state=present   #使用yum安装,并配置需安装的软件名(name),及状态(state)
    - name: crmsh rpm packages
      copy: src=/ansible/corosync/packages/{{ crmsh }} dest=/tmp/{{ crmsh }} #使用了第一个变量
    - name: pssh rpm packages
      copy: src=/ansible/corosync/packages/{{ pssh }} dest=/tmp/{{ pssh }}  #使用了第二个变量
    - name: crmsh installing
      command: yum -y reinstall /tmp/{{ crmsh }} /tmp/{{ pssh }}  #使用了两个变量
    - name: authkey configure file
      copy: src=/ansible/corosync/conf/authkey dest=/etc/corosync/authkey
    - name: authkey mode 400   #定义一个文件权限设置任务
      file: path=/etc/corosync/authkey mode=400
      notify:   #定义一个通知,当此任务执行时,可以激发响应的handler
        - restart corosync
    - name: corosync.conf configure file
      copy: src=/ansible/corosync/conf/corosync.conf dest=/etc/corosync/corosync.conf
      tags:
        - conf
      notify:
        - restart corosync
    - name: ensure the corosync service startup on boot
      service: name=corosync state=started enabled=yes
  handlers:   #定义当关注的资源发生变化时,需采取的操作
    - name: restart corosync  #定义一个服务重启任务
      service: name=corosync state=restarted



运维网声明 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-404421-1-1.html 上篇帖子: ansible内置变量 下篇帖子: ansible+ssh自动化运维
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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