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

[经验分享] ansible(续一)

[复制链接]

尚未签到

发表于 2018-7-29 09:43:38 | 显示全部楼层 |阅读模式
  安装本地软件包
  [root@ms.dtedu.com~]$ansible all -m yum -a "name=/root/ipvsadm-DR.rpm state=installed "
  1.10user模块
  创建和管理用户,其实使用command模块同样可以达到同样的效果。
  选项:
  home:指定家目录
  createhome:配合home使用,yes/no
  password:密码
  name:用户名
  state:状态,present,absent等
  shell:使用的shell类型
  system:指定系统账户类型
  样例:
  1、创建用户gongbing,密码12313,其他默认
  [root@ms.dtedu.com~]$ansible all -m user -a "name=gongbing password=123123"
  node5.dtedu.com | SUCCESS => {
  "changed": true,
  "comment": "",
  "createhome": true,
  "group": 500,
  "home": "/home/gongbing",
  "name": "gongbing",
  "password": "NOT_LOGGING_PASSWORD",
  "shell": "/bin/bash",
  "state": "present",
  "system": false,
  "uid": 500
  }
  2、删除用户,同时删除用户家目录,如果没有使用remove=yes,则家目录不会被删除
  [root@ms.dtedu.com~]$ansible all -m user -a "name=gongbing  state=absent remove=yes"
  node5.dtedu.com | SUCCESS => {
  "changed": true,
  "force": false,
  "name": "gongbing",
  "remove": true,
  "state": "absent"
  }
  1.11synchronize模块
  使用rsync同步文件
  选项:
  archive:是否归档
  copy_links:是否复制链接文件
  delete:删除源中没有,目标中有的文件
  dest:目的位置
  dest_port:对方接口,ssh接口
  dirs:
  mode:pull,客户端主动拉,push,服务器端推送
  recursive:是否递归
  rsync_path:如果没有在默认位置,指定命令的路径位置
  src:指定管理服务器源文件位置
  样例:
  1、同步管理服务器/root/目录下的文件到远端服务器的/root/目录下,并删除源目录中没有,而目的目录中有的文件,删除命令慎用。
  [root@ms.dtedu.com~]$ansible all -m synchronize -a "src=/root/ dest=/root/ rsync_path=/usr/bin/rsync rsync_opts='-avz --exclude=ipvsadm_DR-realserver.sh' delete=yes"
  root@node5.dtedu.com's password:
  node5.dtedu.com | SUCCESS => {
  "changed": true,
  "cmd": "/usr/bin/rsync --delay-updates -F --compress --delete-after --archive --rsh 'ssh  -S none -o StrictHostKeyChecking=no' --rsync-path=\"/usr/bin/rsync\" -avz --exclude=ipvsadm_DR-realserver.sh --out-format='<<CHANGED>>%i %n%L' \"/root/\" \"node5.dtedu.com:/root/\"",

  "msg": "building file list ... done\n<f.st...... ipvsadm-DR-realserver.sh\n.d..t...... .ansible/tmp/\ncd+++++++++ .ansible/tmp/ansible-local-4895_RVFdv/\ncd+++++++++ .ansible/tmp/ansible-local-4895_RVFdv/ansiballz_cache/\n<f+++++++++ .ansible/tmp/ansible-local-4895_RVFdv/ansiballz_cache/synchronize-ZIP_DEFLATED\ncd+++++++++ .ansible/tmp/ansible-tmp-1491648599.06-190887811627457/\n<f+++++++++ .ansible/tmp/ansible-tmp-1491648599.06-190887811627457/synchronize.py\ncd+++++++++ .ansible/tmp/ansible-tmp-1491648599.06-197655636791593/\n<f+++++++++ .ansible/tmp/ansible-tmp-1491648599.06-197655636791593/synchronize.py\n*deleting   .ansible/tmp/ansible-tmp-1491648361.43-270103109521447/synchronize.py\n*deleting   .ansible/tmp/ansible-tmp-1491648361.43-270103109521447/\n*deleting   .ansible/tmp/ansible-tmp-1491648361.43-153252689637438/synchronize.py\n*deleting   .ansible/tmp/ansible-tmp-1491648361.43-153252689637438/\n*deleting   .ansible/tmp/ansible-local-4846toPJz0/ansiballz_cache/synchronize-ZIP_DEFLATED\n*deleting   .ansible/tmp/ansible-local-4846toPJz0/ansiballz_cache/\n*deleting   .ansible/tmp/ansible-local-4846toPJz0/\n\nsent 123310 bytes  received 121 bytes  11755.33 bytes/sec\ntotal>  "rc": 0,
  "stdout_lines": [
  "building file list ... done",
  "<f.st...... ipvsadm-DR-realserver.sh",
  ".d..t...... .ansible/tmp/",
  "cd+++++++++ .ansible/tmp/ansible-local-4895_RVFdv/",
  "cd+++++++++ .ansible/tmp/ansible-local-4895_RVFdv/ansiballz_cache/",
  "<f+++++++++ .ansible/tmp/ansible-local-4895_RVFdv/ansiballz_cache/synchronize-ZIP_DEFLATED",
  "cd+++++++++ .ansible/tmp/ansible-tmp-1491648599.06-190887811627457/",
  "<f+++++++++ .ansible/tmp/ansible-tmp-1491648599.06-190887811627457/synchronize.py",
  "cd+++++++++ .ansible/tmp/ansible-tmp-1491648599.06-197655636791593/",
  "<f+++++++++ .ansible/tmp/ansible-tmp-1491648599.06-197655636791593/synchronize.py",
  "*deleting   .ansible/tmp/ansible-tmp-1491648361.43-270103109521447/synchronize.py",
  "*deleting   .ansible/tmp/ansible-tmp-1491648361.43-270103109521447/",
  "*deleting   .ansible/tmp/ansible-tmp-1491648361.43-153252689637438/synchronize.py",
  "*deleting   .ansible/tmp/ansible-tmp-1491648361.43-153252689637438/",
  "*deleting   .ansible/tmp/ansible-local-4846toPJz0/ansiballz_cache/synchronize-ZIP_DEFLATED",
  "*deleting   .ansible/tmp/ansible-local-4846toPJz0/ansiballz_cache/",
  "*deleting   .ansible/tmp/ansible-local-4846toPJz0/",
  "sent 123310 bytes  received 121 bytes  11755.33 bytes/sec",

  "total>  ]
  }
  1.12 mount模块
  挂载块设备
  选项:
  fstype:指定文件系统类型
  name:挂载点
  opts:mount自身的参数
  src:要挂载的文件
  state:
  present:只处理fstab中的配置,如果没有挂载点,则不会创建挂载点,但在fstab文件中会写入新的挂载信息。
  [root@node5.dtedu.com /tmp]# cat /etc/fstab
  #
  # /etc/fstab
  # Created by anaconda on Thu Mar  9 09:57:24 2017
  #
  # Accessible filesystems, by reference, are maintained under '/dev/disk'
  # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  #
  /dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
  UUID=1671380c-445a-4f92-8b1e-d90b1f85224c /boot                   ext4    defaults        1 2
  /dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
  tmpfs                   /dev/shm                tmpfs   defaults        0 0
  devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
  sysfs                   /sys                    sysfs   defaults        0 0
  proc                    /proc                   proc    defaults        0 0
  /dev/loop0 /aaa ext3 defaults 0 0
  absent:删除挂载点
  mounted:自动创建挂载点并挂载之
  umounted:卸载挂载点
  样例:
  通过dd命令模拟一个磁盘并分区格式化
  [root@ms.dtedu.com~]$ansible all -a "dd if=/dev/zero of=/disk.img bs=4k count=1024"
  node5.dtedu.com | SUCCESS | rc=0 >>
  记录了1024+0 的读入
  记录了1024+0 的写出
  4194304字节(4.2 MB)已复制,0.00805549 秒,521 MB/秒
  [root@ms.dtedu.com~]$ansible all -a "losetup /dev/loop0 /disk.img"
  node6.dtedu.com | SUCCESS | rc=0 >>
  [root@ms.dtedu.com~]$ansible all -m filesystem -a "dev=/disk.img fstype=ext3  opts=-F"
  node6.dtedu.com | SUCCESS => {
  "changed": true
  }
  1、挂载指定块设备,如果挂载点不存在,则自动创建挂载点。
  [root@ms.dtedu.com~]$ansible all -m mount -a "fstype=ext3 name=/aaa src=/dev/loop0 state=mounted"
  node5.dtedu.com | SUCCESS => {
  "changed": true,
  "dump": "0",
  "fstab": "/etc/fstab",
  "fstype": "ext3",
  "name": "/aaa",
  "opts": "defaults",
  "passno": "0",
  "src": "/dev/loop0"
  }
  2、卸载挂载点。unmounted和sbsent的区别就是absent卸载同时会删除挂载目录。
  [root@ms.dtedu.com~]$ansible all -m mount -a "name=/aaa state=absent"
  node6.dtedu.com | SUCCESS => {
  "changed": true,
  "dump": "0",
  "fstab": "/etc/fstab",
  "name": "/aaa",
  "opts": "defaults",
  "passno": "0"
  }
  七、playbook简单介绍
  组织结构:
  1、target section:定义要执行playbook的远程主机组
  常用配置选项:
  hosts:远程主机组
  user:执行远程主机的用户
  sudo
  sudo_user
  connection:链接到远程主机的方式,默认ssh
  gather_facts:是否在远程主机启动setup模块, 默认启动
  2、variable section:playbook运行时变量部分
  常用配置选项:
  vars:给变量赋值
  vars_files:调用定义变量的文件
  vars_prompt:交互式输入变量值
  3、task section:远程主机上执行的任务列表
  方法一:
  -name:install apache
  action: yum name=httpd state=installed
  方法二:
  -name:configure apache
  copy:src=files/httpd.conf dest=/etc/httpd/conf/httpd.conf
  方法三:
  -name:resart apache
  service:
  name:httpd
  state:restarted
  4、handler section:task执行完成后需要调用的任务
  注意:在playbooks中使用模块跟在命令中使用有一点点不同,因为在playbooks中有许多从setup模块或者之前的模块中获取的数据要处理。有些模块在命令中无法使用,是因为他们需要访问变量,还有一些可以在命令行中使用的模块在playbooks中使用时会有更强大的功能
  八、playbooks常用模块
  1、template模块
  可以设计一个框架式的配置文件,如何把ansible需要的值插入到合适的位置,其中jinja2最为复杂。
  template和copy模块的不同:
  template可以将配置文件中的变量在复制到目的文件中时,直接复制的是变量的值,而copy就是传统的文件复制功能。
  2、pause暂停模块
  在playbooks中暂停一段时间,加在脚本中通常用于给用户提供一个确认,或者提供一个手动确认。
  - hosts: dtedu
  tasks:
  - name: "wait on user input"
  pause: prompt="warning! detected alight issue.ENTER to continue CTRL-C to quit"
  - copy: src=/root/123 dest=/tmp/
  [root@ms.dtedu.com~]$ansible-playbook pause.yml
  PLAY [dtedu] *******************************************************************
  TASK [setup] *******************************************************************
  ok: [node6.dtedu.com]
  ok: [node5.dtedu.com]
  TASK [wait on user input] ******************************************************
  [wait on user input]
  warning! detected alight issue.ENTER to continue CTRL-C to quit:
  Press 'C' to continue the play or 'A' to abort
  3、wait_for模块
  用来检查一个tcp端口是否准备好接收远程连接,这是由远程主机来完成的,这个模块在后台运行某些程序,或者启动某些程序时需要一些时间的时候特别有用。可以用local_action参数来指定从远程主机运行命令,并配合ansible_hostname作为主机参数来连接远程受管主机。
  4、assemble模块
  把多个受管主机的文件合并成一个文件,当配置文件不允许包含的时候,特别有用,特别是在设置root用户的authorized_keys文件的时候。
  5、add_host添加主机模块
  可以动态的添加受管主机到playbooks中,可以使用uri模块从CMDB中获取主机信息然后添加他们。
  6、group_by
  根据主机的特性进行分组,可以将同一个操作系统,同一个拓扑结构,或者拥有相同性质的主机(都运行web)分为一组。
  7、get_url
  从远程主机下载文件。
  -name: download foo.conf
  Get_url: url=http://www.baidu.com dest=/root/ mode=0440
  8、fail模块
  九、变量详解
  1、在hosts文件中定义变量。/etc/insible/hosts,这种定义方法使用率并不多。
  [dtedu]
  #10.40.0.[220:230]
  node[5:6].dtedu.com http_port=80
  2、在playbooks中定义变量。

运维网声明 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-542859-1-1.html 上篇帖子: linux自学笔记--ansible 下篇帖子: 自动化运维工具Ansible实战(六)playbook常用的模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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