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

[经验分享] Ansible实战演练

[复制链接]

尚未签到

发表于 2018-1-2 14:14:05 | 显示全部楼层 |阅读模式
[iyunv@Ansible-server ~]# rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

[iyunv@Ansible-server ~]# ansible web -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k   #使用ansible推送公钥,免密管理



  【Ansible-ping模块】
[iyunv@Ansible-server ~]# ansible web -m ping


  【Ansible-command模块】
  为ansible默认模块。主要用于执行linux基础命令,可以执行远程服务器命令执行,任务执行等操作 【参数详解】
  chdir     #执行命令前,切换到目录
  creates   #当该文件存在时,则不执行该步骤
  executable    #当切换shell环境执行命令
  free_form      #需要自行的脚本
  removes      #当该文件不存在时,则不执行该步骤
  warn      #如果在ansible.cfg中存在告警,如果设定了false,不会警告此行
[iyunv@Ansible-server ~]# ansible web -m command  -a "date "


[iyunv@Ansible-server ~]# ansible web -m command -a "ping -c 2 baidu.com"   


[iyunv@Ansible-server ~]# ansible web -m command -a "mkdir xiaoyu.txt"     #通过command模块批量创建目录


  【Ansible-copy模块】
  主要用于文件或者目录拷贝,支持文件,目录,权限,用户组功能,参数详解如下
  src      #Ansible端源文件或者目录,空文件不拷贝
  content    #用来替代src,用于将指定的文件内容,拷贝到远程文件内
  dest       #客户端目录或文件,需要绝对路径
  backup    #拷贝之前,先备份远程节点上的原始文件;
  directory_mode   用于拷贝文件夹,新建的文件会拷贝,而老旧的不会拷贝
  follow     #支持link文件拷贝
  force      #覆盖远程主机文件夹的组名
  group     #设定远程主机文件及文件夹的权限
  owner   #设定远程主机文件的用户名
  root@Ansible-server ~]# ansible web -m copy  -a 'src=/etc/passwd dest=/tmp/ mode=755 owner=root'
[iyunv@Ansible-server ~]# ansible web -m copy -a 'content="This homeway" dest=/tmp/passwd mode=755 owner=root'

  【Ansible-yum模块实战】
  Ansible yum模块主要用于软件的安装,升级,卸载,支持红帽.rpm软件的管理,使用详解如下:
  conf_file       #设定远程yum执行所以来的yum配置文件
  disable_gpg_check      #安装软件报之前是够坚持gpg,key;
  name            #需要安装的软件名称
  update_cache       #安装软件钱更新缓存
  enablerepo             #指定repo源名称
  skip_broken            #跳过异常软件节点
  state                    #软件包状态,包括:install,present,latest,removed
  1)Ansible yum模块操作,name表示需安装的软件名称,state表示状态,常见state= installed表示安装软件,
[iyunv@Ansible-server ~]# ansible web -m yum -a "name=pcre-devel  state=installed"

[iyunv@Ansible-server ~]# rpm -qa pcre-devel

  pcre-devel-7.8-7.el6.x86_64
  2)name表示安装软件名称,state表示状态,常见state=installed表示安装软件,disable_gpg_check=no表示不检查key;
[iyunv@Ansible-server ~]# ansible web -m yum -a "name=popt-devel state=installed disable_gpg_check=no"

  【Ansible  file模块实战】
  主要用于文件的创建,删除,修改,权限,属性的维护和管理
  src                               Ansible端源文件或者目录;
  follow                          支持link文件拷贝;
  force                            覆盖远程主机不一致的内容;
  group                           设定远程主机文件夹的组名;
  mode                           指定远程主机文件及文件及的权限;
  owner                          设定远程主机文件夹的用户名;
  path                      目标路径,也可以用dest,name代替;
  state                      状态包括:file、link、directory、hard、touch、absent;
  attributes               文件或者目录特殊属性。
[iyunv@Ansible-server tmp]# ansible web -m file -a "path=/tmp/`date +%F` state=directory mode=755"    #在/tmp/目录下创建时间目录


[iyunv@Ansible-server tmp]# ansible web -m file -a "path=/tmp/hexun.com state=touch mode=755"           #创建“hexun.com”文件,权限为755


  【Ansible user模块实战】
  主要用于操作系统用户,组,权限,密码等操作;
  system                                默认创建为普通用户,为yes则创建系统用户;
  append                                              添加一个新的组;
  comment                                          新增描述信息;
  createhome                                       给用户创建家目录;
  force                                                 用于删除强制删除用户;
  group                                                创建用户主组;
  groups                                               将用户加入组或者附属组添加;
  home                                                指定用户的家目录;
  name                                                 表示状态,是否create、remove、modify;
  password                                    指定用户的密码,此处为加密密码;
  remove                                              删除用户;
  shell                                           设置用户的shell登录环境;
  uid                                                    设置用户id;
  update_password                        修改用户密码;
  state                                   用户状态,默认为present表示新建用户
[iyunv@Ansible-server ~]# ansible web -m user -a "name=xiaoyu home=/tmp"

[iyunv@Ansible-server ~]# tail -1 /etc/passwd

  xiaoyu:x:500:500::/tmp:/bin/bash
[iyunv@Ansible-server ~]# ansible web -m user -a "name=user1 home=/tmp shell=/sbin/nologin"

[iyunv@Ansible-server ~]# tail -1 /etc/passwd

  user1:x:501:501::/tmp:/sbin/nologin
[iyunv@Ansible-server ~]# ansible web -m user -a "name=xiaoyu state=absent"


  【Ansible-cron模块实战】
  主要用于添加,删除,更新操作系统crontab任务计划
  name                                     任务计划名称;
  cron_file                                    替换客户端该用户的任务计划的文件;
  minute                                    分( 0-59 ,* ,*/2 );
  hour                                      时( 0-23 ,* ,*/2 );
  day                                       日( 1-31 ,* ,*/2 );
  month                                    月( 1-12 ,* ,*/2 );
  weekday                                   周( 0-6 或 1-7 ,* );
  job                                       任何计划执行的命令,state要等于present;
  backup                                    是否备份之前的任务计划;
  user                                       新建任务计划的用户;
  state                                       指定任务计划present、absent。
[iyunv@Ansible-server ~]# ansible web -m cron -a "minute=* hour=* day=* month=* weekday=* name='This is chrontab' job='/usr/sbin/ntpdate 192.168.2.138'"    #设置时间同步计划任务

  【Ansible synchronize模块实战】
  compress                       开启压缩,默认为开启;
  archive                                是否采用归档模式同步,保证源和目标文件属性一致;
  checksum                             是否效验;
  dirs                                   以非递归的方式传输目录;
  links                                  同步链接文件;
  recursive                               是否递归yes/no;
  rsync_opts                              使用rsync 的参数;
  copy_links                             同步的时候是否复制连接;
  delete                                 删除源中没有而目标存在的文件;
  src                          源目录及文件;
  dest                              目标目录及文件;
  dest_port                               目标接受的端口;
  rsync_path                             服务的路径,指定 rsync 命令来在远程服务器上运行;
  rsync_timeout                           指定rsync操作的IP超时时间;
  set_remote_user                   设置远程用户名;
  --exclude=.log                           忽略同步.log结尾的文件;
  mode                                同步的模式,rsync同步的方式PUSH、PULL,默认都是推送push。
[iyunv@localhost hexun]# ansible web -m synchronize -a 'src=/root/hexun/  dest=/root/hexunback/'

  【Ansible-service模块实战】
  主要用于远程客户端各种服务端的管理
  enabled                        是否开启启动服务;
  name                            服务名称;
  runlevel                 服务启动级别;
  arguments                     服务命令行参数传递;

  state                      服务操作状态,状态包括started, stopped, restarted,>
[iyunv@localhost ~]# ansible web -m service -a "name=httpd state=restarted"


  远程开机启动nfs服务,设置3,5级别自动启动

  【Ansible-Playbook应用】
  使用Ad-hoc方式点对点命令执行,可以管理远程主机,如果服务器数量很多,配置信息比较多,还可以利用Ansible-Playbook便携脚本,从而以非常简单的方式事先任务树立的自动化与流程化,
  Playbook由一个或多个“play”组成的列表,play的主要功能ansible中的Task定义好的角色,指定剧本对应的服务器组
  从根本上说,Task是一个任务,Task调用ansible各种模块module,将多个paly组织在一个playbook剧本中,然后组成一个非常完整的流程控制集合
  基于Ansible Playbook还可以收集命令,易于阅读,方便管理
  YAML是一个直观的能够背电脑识别的数据据序列化格式,是一个可读性高并容易被人阅读,容易和奇偶按本语言交互,用来表达资料序列的编程语言,
  它参考了其它多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822,是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。
  YAML使用空白字符和分行来分隔资料,适合用 grep、Python、Perl、Ruby 操作。
  (1)YAML语言特性如下:
  可读性强;
  和脚本语言的交互性好;
  使用实现语言的数据类型;
  一致的信息模型;
  易于实现;
  可以基于流来处理;
  可扩展性强。
  (2) Playbooks组件包括如下:
  Target                                        定义playbook的远程主机组;
  Variable                              定义playbook使用的变量;
  Task                                         定义远程主机上执行的任务列表;
  Handler                              定义task执行完成以后需要调用的任务,例如配置文件被改动,则启动handler任务重启相关联的服务。
  (1)           Target常用参数如下:
  hosts                     定义远程主机组;
  user                             执行该任务的用户;
  sudo                                    设置为yes的时候,执行任务的时候使用root权限;
  sudo_user                                  指定sudo普通用户;
  connection                                 默认基于SSH连接客户端;
  gather_facks                        获取远程主机facts基础信息。
  (2)           Variable常用参数如下:
  vars                                          定义格式,变量名:变量值;
  vars_files                           指定变量文件;
  vars_prompt                              用户交互模式自定义变量;
  setup                                         模块去远程主机的值;
  (3)           Task常用参数如下:
  name                                         任务显示名称也即屏幕显示信息;
  action                                        定义执行的动作;
  copy                                          复制本地文件到远程主机;
  template                                    复制本地文件到远程主机,可以引用本地变量;
  service                               定义服务的状态。
  Ansible playbook案例演示如下:
  (1)           远程主机安装Nginx WEB服务,playbook代码如下,执行结果如图21-33所示:
  - hosts: all
  remote_user: root
  tasks:
  - name: Jfedu Pcre-devel and Zlib LIB Install.
  yum:  name=pcre-devel,pcre,zlib-devel state=installed
  - name: Jfedu  Nginx WEB  Server Install Process.
  shell: cd /tmp;rm -rf nginx-1.12.0.tar.gz;wget http://nginx.org/download/nginx-1.12.0.tar.gz;tar xzf nginx-1.12.0.tar.gz;cd nginx-1.12.0;./configure --prefix=/usr/local/nginx;make;make install
  (1)           检测远程主机Nginx目录是否存在,不存在则安装Nginx WEB服务,安装完并启动Nginx,playbook代码如下,执行结果如图21-34所示:
  - hosts: all
  remote_user: root
  tasks:
  - name: Nginx server Install 2017
  file: path=/usr/local/nginx/ state=directory
  notify:
  - nginx install
  - nginx start
  handlers:
  - name: nginx install
  shell: cd /tmp;rm -rf nginx-1.12.0.tar.gz;wget http://nginx.org/download/nginx-1.12.0.tar.gz;tar xzf nginx-1.12.0
  .tar.gz;cd nginx-1.12.0;./configure --prefix=/usr/local/nginx;make;make install
  - name: nginx start
  shell: /usr/local/nginx/sbin/nginx

运维网声明 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-430816-1-1.html 上篇帖子: ansible入门01 下篇帖子: kolla-ansible快速入门
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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