zoukankan      html  css  js  c++  java
  • ansible详解

    ansible:Ansible的核心程序

    HostLnventory:记录每一个管理主机的信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载。

    PlaybooksYAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.
    Core ModulesAnsible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。
    Custom Modules自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写
    Connection Plugins连接插件,Ansible和Host通信使用。

    ansible特点:

    1 Stupied Simple ,上手简单,学习曲线平滑
    2 SSH by default ,安全,无需安装客户端
    3 配置简单、功能强大、扩展性强
    4 支持API及自定义模块,可通过Python轻松扩展
    5 通过Playbooks来定制强大的配置、状态管理
    6 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台
    7 幂等性:一种操作重复多次结果相同

    一 安装ansible

    yum -y install ansible

    二 ansible配置客户端:

    1 server: ssh-keygen
    2 scp id_rsa.pub root@192.168.254.25:/root/.ssh/authorized_keys

    或者:

    1  vim /etc/ansible/hosts
    2  ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=root
    3 在/etc/ansible/ansibe.cfg中取消host_key_checking=False的注释

    如果报错:

    这可能因为三点:

    1)hosts文件主机组添加错误

    2)ansible.cfg配置文件的注释没有取消

    3)没有设置免密登陆

    三 :ansible常用命令

     1 ansible-doc -l #查看支持的模块
     2 ansible-doc -s MODEL_NAME #查看模块用法
     3 ansible命令应用基础
     4 ansible <host-pattern> [options]
     5       -f forks:启动并发线程数        #可以限制同时运行的线程数来控制任务运行
     6       -m model_name:要使用的模块    
     7       -a args:特有的参数        #接在命令和具体动作中间
     8 
     9 ansible all -m ping #查看client端是否正常ping通
    10 ansible webserver -m setup #查看客户端信息
    11 ansible webserver -m copy -a 'src=/root/git_test/code.txt dest=/root/test' #copy文件到cient端
    12 ansible webserver -m user -a "name=test state=present" #创建test用户
    13 ansible webserver -m user -a "name=test state=absent" #删除test用户
    14 ansible webserver -m yum -a ‘name=epel-relese state=latest‘ #yum安装
    15 ansible webserver -m service -a ‘name=httpd state=stopped enabled=no‘ #停止httpd服务
    16 ansible webserver -m script -a ‘/tmp/test.sh‘ #运行脚本
    17 ansible webserver -m command 'date' #查看时间    #执行时会有 command warning提示可以在ansible.cfg的文件中取消command_warnings = False的注释,并置顶格即可

    四:yaml

     1 yaml介绍
     2 
     3 yaml是一个可读性高的用来表达资料序列的格式,yaml参考了其他多种语言,包括:xml,c语言,python,perl以及电子邮件格式RFC2822等,ClarkEvans在2001年在首次发表了这种语言。
     4 
     5 yaml的可读性好
     6 yaml和脚本语言的交互性好
     7 yaml使用实现语言的数据类型
     8 yaml有一个一致的信息模型
     9 yaml易于实现
    10 yaml可以基于流程来处理
    11 yaml表达能力强,扩展性好

    五:yaml文件配置详解

     1 - hosts: zzz    #主机组名,  -置顶格,后面空一格 冒号后面空一格 
     2   remote_user: root    #用户  与hosts对齐
     3   vars:          #变量  
     4   - packages: tree    #意思为package=tree 指定变量用- 变量
     5   tasks:          #任务:
     6   - name: yum install tree    #任务名 
     7     yum: name={{ packages }} state=absent  #用什么模块就什么模块名,将packages当作变量赋值给name,这就是jinjia2的用法
     8     notify:        #上面命令一旦执行成功并且有变化就触发触发器下面的命令,notify起到承接提示的作用。
     9     - delete user
    10   - name: changed service status
    11     service: name=httpd state=stopped
    12   - name: create users
    13     user: name={{ item }}    #{{ item }}当作变量名,固定内置用法
    14     with_items:                             #这里以with—item:来引用,一般用于批量操作
    15     - user1
    16     - user2
    17     - user3
    18   - name: copy httpd.conf
    19     copy: src=/etc/httpd/conf/httpd.conf dest=/etc/httpd/conf/zzz
    20     notify:
    21     - service httpd restart
    22   handlers:                        #与hosts对齐
    23   - name: service httpd restart     #名称与notify的名称一致才能触发
    24     service: name=httpd state=restarted        #名称下面写具体操作内容
    25   - name: delete user
    26     user: name=likai1 state=absent

     templates模块:

    1) mkdir templates                       #root下创建templates目录

    2) cd /etc/httpd/conf   && cp -a httpd.conf  /root/templates/httpd.conf      #将内容复制到templates目录下

    3) mv  templates/httpd.conf  templates/httpd.conf.j2     #以j2后缀为命名文件

    4)  打开httpd的配置文件将listen 80 改为 listen {{ port }}      #将端口号设置为变量

    5)打开ansible/hosts文件 在添加的主机信息后面再加上port = 5000,port=6000     #(此数字自己设置),目的是便于查看执行完yml文件后的效果。

    下面进行templates模块在yml文件的配置:

     1 - hosts: zzz
     2   remote_user: root
     3   tasks:
     4   - name: cp httpd.conf
     5     template: src=/root/templates/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf    #src=以j2为后缀的文件的绝对路径
     6     notify:
     7     - restart httpd
     8   handlers:
     9   - name: restart httpd
    10     service: name=httpd state=restarted     #注意重启操作是需要主机防火墙关闭的。

    在客户端主机上执行ss -tnl如果有5000或者6000的端口开启则证明templates模块应用成功。

    如果报错:

    这是因为主机组中并没有此目录。

     roles介绍:

    什么情况下用到roles

    主机组中的主机之间也会有不同的需求,为了满足这些不同的需求就需要用到roles(重复调用代码)

    下面开始:

    1)mkdir -pv ansible_playbooks/roles/{webserver,dbserver}/{files,tasks,vars,templates,handlers}     #创建roles所需目录
    2)tree ansible_playbooks                  #查看此目录的树状结构
    3)在webser目录:
    cp /etc/httpd/conf/httpd.conf files/ #假设主机相同的前提下,复制配置文件信息到files目录下 4) 在task目录下创建main文件 #main.yml的main为固定写法
    cd tasks
    5) vim main.yml - name: install httpd package yum: name=httpd - name: install configuration file copy: src=httpd.conf dest=/etc/httpd/conf/httpd.conf notify: - restart httpd
    6)在handlers目录下创建main文件并写入 - name: restart httpd #与notify的名称保持一致 service: name=httpd state=restarted

    # 以上步骤dbbserver同理,将httpd改成cobbler来进行区分
    7)然后cd至ansible_playbooks下创建site.yml文件,写入: #必须和ansible_playbooks是同一级目录,而且site为固定写法 - hosts: zz #可以是具体的主机ip地址 remote_user: root roles: #定义角色 - webserver - dbserver 8)执行: ansible-playbook site.yml

            

  • 相关阅读:
    关于NSDictionary的一点感悟
    (转)UITableView使用详解 相当详细,不错的东东
    UITextField的总结
    警告框(AlertView)与进度轮结合使用
    [转]自定义UITableView各种函数
    UISegmentedControl的所有操作总结
    英特尔多核平台编程优化大赛报告
    Makefile完全解析PART1.入门
    Makefile完全解析PART3.书写规则
    Makefile完全解析PART2.原理
  • 原文地址:https://www.cnblogs.com/zzzynx/p/10804540.html
Copyright © 2011-2022 走看看