您的位置:新葡亰496net > 电脑系统 > 新葡亰496netAnsible权威指南笔记,运维自动化

新葡亰496netAnsible权威指南笔记,运维自动化

发布时间:2019-08-31 15:39编辑:电脑系统浏览(62)

     

    Ansible主配置文件:/etc/ansible/ansible.cfg
    Inventory配置文件:/etc/ansible/hosts

    Ansible自动化运转为工人身份具使用详解

    一、 ansible 简介

    1. ansible

    ansible是新面世的 自动化 运行工具 , 基于Python研究开发 。 糅合了相当多著名运营工具的亮点实现了批量操作系统配置、批量顺序的安插、批量运作命令等成效。 仅需在治本专门的工作站上设置 ansible 程序配置被管理调控主机的 IP 音信,被管理调控的主机无顾客端。 ansible 应用程序存在于 epel( 第三方社区 ) 源,依赖于广大 python 组件

    新葡亰496net 1

    2.ansible 特性

    模块化 设计 ,调用特定的模块来完结一定职责 ,本人是骨干组件,短小精悍 ;

    据说Python语言达成,由Paramiko (python 的三个可并发连接 ssh 主机成效库 ) , PyYAML和Jinja2 ( 模板化 ) 多个基本点模块完结;

    布置轻易,agentless 无客商端工具;

    主干格局 工作;

    支撑自定义模块 功能;

    支撑playbook 剧本,一连职分按顺序安装顺序达成;

    希望各个命令具备 幂等性:

    3.ansible 架构

    ansible core : ansible 自己大旨模块

    host inventory: 主机库,定义可管理调整的主机列表

    connection plugins: 连接插件,一般暗中同意基于 ssh 协商连接

    modules:core modules ( 自带模块 ) 、 custom modules ( 自定义模块 )

    playbooks :剧本,依照所设定编排的一一推行到位布局职分

    新葡亰496net 2

    1. 配置 文件:

    (1)ansible 应用程序的 主配置文件:/etc/ansible/ansible.cfg

    (2) Host Inventory 定义管理调整主机 :/etc/ansible/hosts

    依据 INI风格;中括号中的字符是组名;一个主机可相同的时间属于三个组;

    示例:

    # Ex 1: Ungrouped hosts, specify before any groupheaders. 直接在其余组的头顶前边钦点,不属于别的组的主机

    green.example.com

    blue.example.com

    192.168.100.1

    192.168.100.10

    # Ex 2: A collection of hosts belonging to the'webservers' group ;一群主机属于贰个组,比方定义为 'webservers' 的组

    [webservers]

    alpha.example.org

    beta.example.org

    192.168.1.100

    192.168.1.110

    在意:暗中同意是以 root 用户推行,但是依附 ssh 连接操作要一再输入密码,为便利能够运用基于 ssh 密钥情势进行验证

    二、 ansible 应用程序命令

    1. ansible-doc命令:获取模块列表,及模块使用格式;

    ansible-doc -l :获取列表

    ansible-doc -s  module_name :获取钦点模块的运用音信

    2.ansible 命令格式

    ansible  <host-pattern>  [-f forks] [-m module_name]  [-a args]

    <host-pattern>

    指明管控主机,以模式形式表示或者直接给定 IP ,必须事先定义在文件中; all 设置所有

    [-f forks]

    指明每批管控多少主机,默认为 5 个主机一批次

    [-m module_name]

    使用何种模块管理操作,所有的操作都需要通过模块来指定

    [-a args]

    指明模块专用参数; args 一般为 key=value 格式

    注意:command模块的参数非为kv格式,而是直接给出要执行的命令即可;

    留心: <host-pattern> 默许读取 /etc/ansible/hosts ,也足以指明自定义文件路线

    -iPATH, --inventory=PATH:指明使用的host inventory文件路线;

    常用模块 (module_name) :

    1) command:暗中认可模块 ,可粗略。在中远距离主机上开展操作命令

    -a  'COMMAND'

    瞩目: comand 模块的参数非 key=value 格式,直接交给要实施的授命

    [[email protected] ~]# ansible all -m command -a  'ifconfig'

    2)user:

    -a 'name=  state={present ( 创立 ) |absent ( 删除 ) }  force= ( 是不是强制操作删除家目录 )   system=  uid=  shell= home='

    [[email protected] ~]# ansible all -m user -a 'name=ansible state=present'

    3)group:

    -a 'name= state={present|absent}  gid=  system= ( 系统组 ) '

    [[email protected] ~]# ansible all -m group -a 'name=mygroup state=presentsystem=true'

    4)cron:

    -a  'name= state=  minute=  hour= day=  month=  weekday= job='

    [[email protected] ~]# ansible all -m cron -a 'name='Time' state=presentminute='*/5' job='/usr/sbin/ntpdate 172.168.0.1 &> /dev/null''

    5)ping:

    无参数

    [[email protected] ~]# ansible all -m ping

    6) file: 文件管理

    -a 'path=  mode=  owner= group= state={file|directory|link|hard|touch|absent}  src= (link ,链接至何处 ) '

    [[email protected] ~]# ansible all -m file -a 'path=/tmp/testdirstate=directory'

    [[email protected] ~]# ansible all -m file -a 'path=/tmp/test.txt state=touchmod=600 owner=user1'

    7)copy:

    -a 'dest= ( 远程主机上路线 )   src= ( 本地主机路线 )   content= ( 直接指明内容 )  owner=  group=  mode='

    [[email protected]]# ansible web -m copy -a 'src=/etc/yum.repos.d/aliyun.repodest=/etc/yum.repos.d/'

    8)template

    -a  'dest= src='#'" content=  owner= group=  mode='

    9)yum:

    -a 'name=  conf_file= ( 指明配置文件 )  state={present|latest|absent} enablerepo= disablerepo='       

    [[email protected] ~]# ansible all -m yum 'name=httpd state=present'

    10)service:

    -a 'name= state={started|stopped|restarted} enabled= ( 是不是开机自动运行)   runlevel='

    [[email protected] ~]# ansible all -m service -a 'name=httpd state=started'

    11)shell:

    -a 'COMMAND'   运行 shell 命令

    [[email protected] ~]# ansible all -m shell -a echo "123456789" |passwd --stdin user1'

    12)script:

    -a '/PATH/TO/SC景逸SUVIPT' 运营脚本

    [[email protected] ~]# ansible all -m script -a '/tmp/a.sh'

    13) setup:获取钦赐主机的facts 变量 ;

    新葡亰496net 3

    三、 Playbooks 剧本

    1.playbook 组织格式:YAML 语言格式

    playbooks 是 ansible 更有力的配备管理组件,达成基于文本文件编写制定实践的四个职务,且数十二回重复施行

    (1)YAML 简介

    YAML : YAML Ain't  Markup Language;  Yet Another Markup Language;

    好像于半结构化数据,表明式配置;可读性较高的用来表述资料连串的格式,易于与脚本语言交互

    官方站点:

    (2) 语法 格式

    1) 任何书记结构都用缩进来标记,能够嵌套

    2) 每一行是四个键值数据 k ey :v alue ,冒号隔离。若想在一行标志供给用 { } 和 , 分隔格式

    3) 列表用 - 标识

    1. inventory参数 :主机库 ssh 参数设置

    ansible基于ssh连接inventory中钦定的远程主机时,将以此处的参数钦赐的习性实行;

    ansible_ssh_port

    指定 ssh 端口

    ansible_ssh_user

    指定 ssh 用户

    ansible_ssh_pass

    指定 ssh 用户登录是认证密码,明文密码不安��

    ansible_sudo_pass

    指明 sudo 时候的密码

    实例:

    [websrvs]

    192.168.0.101  ansible_ssh_port=22  ansible_ssh_user=root  ansible_ssh_pass=xuding

    192.168.0.102

    注意:在 /etc/ansible/hosts 中一向定义连接时候的密码不安全,一般建议依照ssh 的密钥认证方法贯彻

    3.playbooks

    (1) 大旨成分

    Tasks 任务、 Variables 变量、 Templates 模板、 Handlers 处理器、 Roles 角色

    (2)playbooks 中 定义任务:

    - name: task description     注释 描述音讯

    module_name: module_args   申明模块:定义 ansible 模块参数

    新葡亰496net 4

    (3) ansible-playbook 执行 命令:

    ansible-playbook  <filename.yml> ...  [options]

    新葡亰496net 5

    4.playbook--- 变量

    (1)变量命名:字母、数字和下划线组成,仅能以字母起首;

    (2)变量类别:

    1) facts:由长途主机发回的主机 特有的 属性新闻,那么些新闻被保存在ansible变量中;无须 证明 ,可一贯调用;

    2)自定义变量:

    因而命令行传递:ansible-playbook  test.yml  --extra-vars "host=www user=test"

    通过roles传递

    3) 主机变量:定义在inventory中的主机之后的变量; 直接传送给单个主机的变量

    实例:

    [[email protected] ~]# vim /etc/ansible/hosts 中央政府机关接定义在主机之后

    [web]

    192.168.0.101    host=mail

    192.168.0.102

    192.168.0.103

    4) 组变量:定义在inventory中的组上的变量 ( 比如在暗许的公文 /etc/ansible/hosts 上编辑 )

    [group_name:vars]

    var1=value

    var2=value

    留神:组名要事先存在,实比如下:

    [websrvs]

    192.168.0.101

    192.168.0.102

    [websrvs:vars]

    host=mail

    变量使用示例:

    [[email protected]~]# vim useradd.yml

    -    hosts: websrvs

    remote_user: root

    vars:

    username: testuser

    password: xuding

    tasks:

    -name: add user

    user: name={{ username }} state=present

    -name: set password

    shell: /bin/echo {{ password }} |/usr/bin/passwd --stdin {{ username }}

    注释:

    1) {{ }} 调用变量

    2) #ansible-playbook /PATH/TO/SOME_YAML_FILE  { -eVAWranglerS|--extra-vars=VAPAJEROS}     变量的重复赋值调用方法

    [[email protected] ~]# ansible-playbookuseradd.yml --extra-vars "username=Ubuntu"

    5.playbook---  tasks

    (1) 条件测量检验:

    在某task前边增加when子句就能够达成规范测量试验功用;when语句协助Jinja2语法;

        实例 : 当时 RedHat 连串系统时候调用 yum 安装

    tasks:

    -name: install web server package

    yum: name=httpd state=present

    when: ansible_os_family == "RedHat"

    (2) 迭代: item

    在task中调用内置的item变量;在某task前边使用with_items语句来定义元素列表;

    tasks:

    -name: add four users

    user: name={{ item }}  state=present

    with_items:

    -testuser1

    -testuser2

    -testuser3

    -testuser4

    留心:迭代中,列表中的各样元素得感到字典格式;

    实例:

    -name: add two users

    user: name={{ item.name }}  state=present groups={{ item.groups }}

    with_items:

    - { name: 'testuser5', groups: 'wheel' }

    - { name: 'testuser6', groups: 'root' }

    6.playbook--- handlers: 处理器;触发器

    独有其关心的规范化满意时,才会被触发实行 的天职;

    实例:配置文件发出更换触发重启服务

    -hosts: websrvs

    remote_user: root

    tasks:

    -name: install httpd

    yum:name=httpd state=present

    -name: install config file

    copy: src=/root/httpd.confdest=/etc/httpd/conf/httpd.conf

    notify: restart httpd

    -name: start httpd service

    service: name=httpd state=started

    handlers:

    -name: restart httpd

    service: name=httpd state=restarted

    7.playbook 模板

    templates:

    用来转移文书文件(配置文件);模板文件中可应用jinja2表明式,表明式要定义在{{}},也能够总结地仅试行变量替换;

    roles:

    roles用于落实“代码复用”;

    roles以特定的层系型格式组织起来的playbook成分(variables,tasks, templates, handlers);

    可被playbook以role的名字直接开展调用;

    用法 :在 roles/ 下建立 [group_name] 子目录,而不是全体都要创制;举例:

    /etc/ansible/roles/ (在 /etc/ansible/ansible.cfg 定义 roles 目录)

    webserver/

    files/:此角色中用到的装有文件均放置于此目录中;

    templates/:Jinja2模板文件存放地点;

    tasks/:职分列表文件;能够有多少个,但起码有三个叫做main.yml的文本;

    handlers/:管理器列表文件;能够有两个,但最少有贰个可以称作main.yml的文本;

    vars/:变量字典文件;可以有八个,但起码有多少个名称叫main.yml的文本;

    meta/:此剧中人物的异样设定及依赖关系;

    运用 Ansible 高效交付 Docker 容器 

    动用Ansible批量管理远程服务器 

    Ansible安装配置与简短利用 

    在 CentOS 7 中安装并采取自动化学工业具 Ansible 

    Ansible和Docker的法力和用法 

    Ansible批量搭建LAMP意况

    Ansible :一个配备管理和IT自动化工具 

    Ansible 的详尽介绍:请点这里
    Ansible 的下载地址:请点这里

    正文永世更新链接地址:

    一、 ansible 简介

    1. ansible ansible是新出现的 自动化 运转为工人身份具 , 基于Python研究开发 。 糅合了无数家谕户晓运营工具的...

    一、 ansible 简介

    #

    运营自动化发展进程及本领使用

    概念主机三种措施:
    ip:10.155.55.10
    name:linux1
    主机组:
    [test]
    compute1
    compute2
    compute[2:5]

    1. ansible

    在托管节点上安装

    IaaS基础设备即服务(相当于卖硬件) ,PaaS平台即服务(卖操作系统),SaaS软件即服务(卖软件)

    密钥生成配置
    生成:ssh-keygen -t rsa
    复制到被管制主机: ssh-copy-id -i /root/.ssh/id_rsa.pub root@ip
    测试:ssh root@172.16.100.8 'date'
    岁月同步:ntpdate 172.16.0.1

    ansible是新出现的 自动化 运维工具 , 基于Python研发 。 糅合了无数盛名运行工具的独到之处实现了批量操作系统配置、批量顺序的布局、批量运转命令等效用。 仅需在管制职业站上安装 ansible 程序配置被管理调节主机的 IP 音信,被管控的主机无客商端。 ansible 应用程序存在于 epel( 第三方社区 ) 源,正视于广大 python 组件

    python

    商城实际选取场景剖析

    ansible-doc -l #翻看补助的通令
    ansible-doc -s yum #查看具体的用法

    新葡亰496net 6

    解释器

    灰度情状(生产条件的一有的)

    ansible语法:ansible <host-pattern> [-f forks] [-m module] [-a args]
    -f:运维的线程数
    -m:使用的模块
    -a:使用的命令

    2.ansible 特性

    ansible myhost --sudo -m raw -a "yum install -y python2 python-simplejson"

    效果与利益:在全量宣布代码前将代码的成效面向小量精准顾客公布的条件,可依靠主机或客户试行灰度发表

    科普模块:
    command:命令模块,私下认可模块
    ansible all -a 'date'

    模块化 设计 ,调用特定的模块来产生一定职务 ,自个儿是大旨器件,短小精悍 ;

    #

    案例:共100台湾学生产服务器,先发布当中的10台服务器,那10台服务器便是灰度服务器

    cron:
    ansible web -m cron -a 'minute="/10" job="/bin/echo hello" name="test cron job"'
    ansible web -m cron -a 'minute="
    /10"
    sate:present 安装 absent 移除

    依照Python语言实现,由Paramiko (python 的一个可并发连接 ssh 主机功用库 ) , PyYAML和Jinja2 ( 模板化 ) 多少个基本点模块完结;

    次第平台上设置

    灰度情形:往往该版本效果改变很大,为有限支撑起见特意先让有个别顾客优化心得该意义,待这一部分客户选用未有重大主题素材的时候,再全量发表至全数服务器

    user:
    ansible web -m user -a 'name=mysql uid=306 system=yes group=mysql'

    配置轻便,agentless 无顾客端工具;

    ansible

    先后发布

    group:
    ansible web -m group -a 'name=mysql gid=306 system=yes'

    宗旨格局 职业;

    #python

    次第发表需要:

    copy:
    ansible all -m copy -a 'src=/ect/fstab dest=/tmp/fstab.ansible owner=root mode=640'
    ansible all -m copy -a 'content="Hello Ansible新葡亰496net,nHi Mageedu" dest=/tmp/test.ansible'

    支撑自定义模块 功用;

    多境况管理:

    无法导致系统故障或促成系统完全不可用

    file:设定文件属性,创立链接文件
    ansible all -m file -a 'path=/tmp/fstab.link src=/tmp/fstab.ansible state=link'

    支撑playbook 剧本,接二连三职务按次序设置顺序完毕;

    pyenv

    不可能影响顾客体验

    ping:测量试验连通
    ansible all -m ping

    希望各样命令具有 幂等性:

    预发表验证:

    service: 管理服务
    ansible web -m service -a 'enabled=true name=httpd state=started'

    3.ansible 架构

    virutalenv

    新本子的代码先发布到服务器(跟线上碰着安插完全同样,只是未接入到调节器)

    shell: 相比较command支持管道变量等复杂命令
    ansible all -m user -a 'name=user1'
    ansible all -m shell -a 'echo mageedu | passwd --stdin user1'

    ansible core : ansible 自个儿焦点模块

    etc/ansible: ansible.cfg hosts

    灰度发布:

    script:将本地脚本复制到远程主机,并运营
    ansible all -m script -a "test.sh" #仅协助相对路径

    host inventory: 主机库,定义可管理调整的主机列表

    #ansible.cfg

    听别人讲主机,客户,业务

    yum: 安装程序包
    ansible all -m yum -a "name=zsh state=present"

    connection plugins: 连接插件,一般暗中认可基于 ssh 商业事务连接

    inventory

    发布路线:

    setup: 收罗远程主机的facts,在jinja2模板中得以调用
    ansible all -m setup -a 'filter=ansible_ec2_instance_id'

    modules:core modules ( 自带模块 ) 、 custom modules ( 自定义模块 )

    library

    /webapp/tuangou

    • name: node1
      command: echo "ok!"
      when: ansible_default_ipv4.address == "{{ HA_node1 }}"
      tags:
      • node1
    • name: node2
      command: echo "no!"
      when: ansible_default_ipv4.address == "{{ HA_node2 }}"
      tags:
      • node2

    playbooks :剧本,依照所设定编排的依次试行到位布局职分

    module_name

    /webapp/tuangou-1.1

    YAML: http://www.yaml.org
    键值对:
    序列-
    字典{,,}
    register:将职务的出口作为变量,然后用于别的任务。
    传递变量:ansible-playbook test.yml --extra-vars "hosts=www user=mageedu"
    [web:vars] #组变量
    ntp_server=ntp.magedu.com
    nfs_server=nfs.magedu.com

    新葡亰496net 7

    ########################################

    /webapp/tuangou-1.2

    delegate_to: 委派
    委任另七个主机也推行职责

    1. 配置 文件:

    ansible all -m ping -u root --sudo

    发表进度:在调整器上下线一批主机(标志为maintanance状态) --> 关闭服务 --> 计划新本子的应用程序 --> 运转服务 --> 在调整器上启用这一堆服务器

    tag:打上标识,实践命令时能够只进行标识部分 #ansible-playbook apache.yml --tags="conf"

    (1)ansible 应用程序的 主配置文件:/etc/ansible/ansible.cfg

    ansible all -m copy -a "src=/etc/fstab dest=/tmp/fstab owner=root group=root

    自动化灰度公布:脚本、公布

    wait_for:等待 #暗中同意等待300秒,默许检查是不是started
    search_regex:是或不是带有有些字符串

    (2) Host Inventory 定义管理调整主机 :/etc/ansible/hosts

    mode=644 backup=yes"

     

    dist_sort:去重分类

    依照 INI风格;中括号中的字符是组名;二个主机可同期属于七个组;

    ansible-galaxy init,install,list,remove

    常用自动化运行工具

    set_fact:定义变量,不过不能够跨playbooks

    示例:

    ansible-pull

    Ansible:python,Agentless,中型Mini型应用境况(管理上百台机械)

    迭代:重复性奉行职责。调用使用item,定义循环列表使用with_items。

    # Ex 1: Ungrouped hosts, specify before any groupheaders. 直接在其他组的尾部后边钦赐,不属于别的组的主机

    期限试行职责

    运用ssh左券远程来进展管理,基于key验证,把首长的公钥传到被管制的主机上去,

    handler:发生转移用notify触发推行handler.

    green.example.com

    ansible-doc -l

    Saltstack:python,一般需配置agent(代理),实践效能更加高 (管理上千台机械)

    when:条件语句

    blue.example.com

    ansible-doc ping

    Puppet:ruby, 成效庞大,配置复杂,重型,适合大型情况 (管理上百台机器)

    templates:模板调用

    192.168.100.1

    ansible-playbook playbook.yml

    Fabric:python,agentless

    roles:使代码段一再调用
    目录名同剧中人物名
    目录结构固定:
    files静态文件
    templates jinjia2模板文件
    tasks 至少有main.yml文件,定义各tasks
    handlers至少有main.yml文件,定义各handlers
    vars至少有main.yml文件,定义变量
    meta定义依赖关系等信息

    192.168.100.10

    ansible-vault encrypt/decrypt xx.yml 

    Chef: ruby,本国应用少

    ansible官方文书档案:http://docs.ansible.com/ansible
    ansible-playbook 例子:https://galaxy.ansible.com/list#/roles?page=1&page_size=10

    # Ex 2: A collection of hosts belonging to the'webservers' group ;一堆主机属于三个组,比方定义为 'webservers' 的组

    加密解密

    Cfengine

    [webservers]

    ########新葡亰496netAnsible权威指南笔记,运维自动化。hosts

    func

    alpha.example.org

    192.168.1.1

    Ansible简介

    beta.example.org

    ntp.mmm.com:222

    Ansible是贰个简便的自动化运转管理工科具,基于Python语言完成,由ParamikoPyYAML多个关键模块创设,可用来自动化计划应用、配置、编排task(持续交付、无宕机更等)。

    192.168.1.100

    [xxx]

       Ansible官网:

    192.168.1.110

    xx[10:20].xx.com

       github地址:

    留心:暗中同意是以 root 顾客施行,可是依附 ssh 连接操作要再三输入密码,为便利能够行使基于 ssh 密钥情势举行求证

    [xxx:vars]

    特性

    二、 ansible 应用程序命令

    xx=aa

      模块化:调用特定的模块,完毕一定任务,1000四个模块

    1. ansible-doc命令:获取模块列表,及模块使用格式;

    cc=bb

      有Paramiko,PyYAML,Jinja2(模板语言)八个主要模块

    ansible-doc -l :获取列表

    [webservers:children]

      扶助自定义模块

    ansible-doc -s  module_name :获取钦定模块的运用音信

    xx

      基于Python语言达成

    2.ansible 指令格式

    cc

      陈设轻易,基于python和SSH(暗许已安装)免代理,agentless

    ansible  <host-pattern>  [-f forks] [-m module_name]  [-a args]

    ansible_ssh_host

      安全,基于OpenSSH

    <host-pattern>

    指明管控主机,以模式形式表示或者直接给定 IP ,必须事先定义在文件中; all 设置所有

    [-f forks]

    指明每批管控多少主机,默认为 5 个主机一批次

    [-m module_name]

    使用何种模块管理操作,所有的操作都需要通过模块来指定

    [-a args]

    指明模块专用参数; args 一般为 key=value 格式

    注意:command模块的参数非为kv格式,而是直接给出要执行的命令即可;

    ansible_ssh_port

      协助playbook编排职分

    注意: <host-pattern> 暗许读取 /etc/ansible/hosts ,也能够指明自定义文件路线

    ansible_ssh_user

    幂等性:多个职责实施1遍和施行n遍效果同样,不因重复推行带来意想不到景况

    -iPATH, --inventory=PATH:指明使用的host inventory文件路线;

    ansible_ssh_pass

      无需代理不重视PKI(没有须要ssl)

    常用模块 (module_name) :

    ansible_ssh_private_key_file=

      可利用任何编制程序语言写模块

    1) command:私下认可模块 ,可粗略。在中远距离主机上海展览中心开操作命令

    ############################

      AML格式,编排职责,辅助增多的数据结构

    -a  'COMMAND'

    ansible webs -m service -a "name=httpd state=restarted"

      较强劲的多层实施方案

    瞩目: comand 模块的参数非 key=value 格式,直接提交要奉行的通令

    ansible "webs1:webs2"

    Ansible主要组成都部队分

    [root@localhost ~]# ansible all -m command -a  'ifconfig'

    ansible "webs1:!xxx"

    1:ANSIBLE PLAYBOOKS:职务剧本(义务集),编排定义Ansible义务集的布局文件,由Ansible顺序 依次试行,平常是JSON格式的YML文件

    2)user:

    ansible "webs1:&xx:!xxxx"

    2:INVENTOENCOREY:Ansible管理主机的清单/etc/ansible/hosts

    -a 'name=  state={present ( 创造 ) |absent ( 删除 ) }  force= ( 是不是强制操作删除家目录 )   system=  uid=  shell= home='

    ansible ~web1*    #

    3:MODULES:Ansible实践命令的效能模块,多数为停放核心模块,也可自定义

    [root@localhost ~]# ansible all -m user -a 'name=ansible state=present'

    正则匹配主机

    4:PLUGINS:模块功能的填补,如一连类型插件、循环插件、变量插件、过滤插件等,该意义临时用

    3)group:

    ###################################

    5:API:供第三方程序调用的应用程序编制程序接口

    -a 'name= state={present|absent}  gid=  system= ( 系统组 ) '

    ansible -i inventory

    6:ANSIBLE:组合INVENTO酷路泽Y、API、MODULES、PLUGINS的绿框,能够驾驭为是ansible命令工 具,其为主干施行工具

    [root@localhost ~]# ansible all -m group -a 'name=mygroup state=presentsystem=true'

    -f

    7:Ansible命令实施来源:

    4)cron:

    线程数

    U7SESportage,普通顾客,即SYSTEM ADMINISTRATOLX570

    -a  'name= state=  minute=  hour= day=  month=  weekday= job='

    --private-key

    CMDB(配置管理数据库) API 调用

    [root@localhost ~]# ansible all -m cron -a 'name='Time' state=presentminute='*/5' job='/usr/sbin/ntpdate 172.168.0.1 &> /dev/null''

    -m

    PUBLIC/PRIVATE CLOUD API调用

    5)ping:

    -M

    USER-> Ansible Playbook -> Ansibile

    无参数

    模块路线

    8:利用ansible达成管理的法子:

    [root@localhost ~]# ansible all -m ping

    -k

    Ad-Hoc 即ansible命令,主要用以有时命令使用情状

    6) file: 文件处理

    注脚密码

    Ansible-playbook 首要用来深远规划好的,大型项指标场景,必要有前提的规划

    -a 'path=  mode=  owner= group= state={file|directory|link|hard|touch|absent}  src= (link ,链接至何处 ) '

    -K sudo

    9:Ansible-playbook(剧本)施行进度:

    [root@localhost ~]# ansible all -m file -a 'path=/tmp/testdirstate=directory'

    密码

    将已有编写制定好的职务集写入Ansible-Playbook

    [root@localhost ~]# ansible all -m file -a 'path=/tmp/test.txt state=touchmod=600 owner=user1'

    -o

    由此ansible-playbook命令分拆任务集至逐个ansible命令,按预订准则逐个推行

    7)copy:

    输出成一行

    10:Ansible首要操作对象:

    -a 'dest= ( 远程主机上路线 )   src= ( 本地主机路线 )   content= ( 直接指明内容 )  owner=  group=  mode='

    -s  sudo

    HOSTS主机

    [root@localhosttmp]# ansible web -m copy -a 'src=/etc/yum.repos.d/aliyun.repodest=/etc/yum.repos.d/'

    -T

    NETWO昂科拉KING网络设备

    8)template

    时间

    11:注意事项

    -a  'dest= src='#'" content=  owner= group=  mode='

    -B

    实践ansible的主机一般称为主要调整端,中央控制,master或沟壍机

    9)yum:

    后台实行命令的时辰

    主要调节端Python版本需求2.6或上述

    -a 'name=  conf_file= ( 指明配置文件 )  state={present|latest|absent} enablerepo= disablerepo='       

    -u

    被控端Python版本小于2.4亟需设置python-simplejson

    [root@localhost ~]# ansible all -m yum 'name=httpd state=present'

    用户

    被控端如开启SELinux必要安装libselinux-python

    10)service:

    -l

    windows不能够做为主要调整端

    -a 'name= state={started|stopped|restarted} enabled= ( 是或不是开机自动运转)   runlevel='

    点名运转的主机

    安装

    [root@localhost ~]# ansible all -m service -a 'name=httpd state=started'

    ###################

    rpm包安装: EPEL源

    11)shell:

    ansible proxy -f 5 -m ping

    yum install ansible

    -a 'COMMAND'   运行 shell 命令

    ansible proyx -s -m command -a "hostname"

    编写翻译安装:

    [root@localhost ~]# ansible all -m shell -a echo "123456789" |passwd --stdin user1'

    ansible proxy --list

    yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto

    12)script:

    time ansible 192.168.1.1 -B 5 -P 2 -T 2 -m command -a 'sleep 20' -u root ##

    tar xf ansible-1.5.4.tar.gz

    -a '/PATH/TO/SCRAV4IPT' 运行脚本

    cd ansible-1.5.4

    [root@localhost ~]# ansible all -m script -a '/tmp/a.sh'

    192.168.1.1

    python setup.py build

    13) setup:获取钦赐主机的facts 变量 ;

    以用户

    python setup.py install

    新葡亰496net 8

    root

    mkdir /etc/ansible

    三、 Playbooks 剧本

    执行

    cp -r examples/* /etc/ansible

    1.playbook 组织格式:YAML 语言格式

    sleep 20

    Git方式:

    playbooks 是 ansible 更加强硬的安顿管理组件,落成基于文本文件编写制定试行的四个职分,且多次重复执行

    ,设置最阿比让接超时时间长度为

    git clone git://github.com/ansible/ansible.git --recursive

    (1)YAML 简介

    #2s

    cd ./ansible

    YAML : YAML Ain't  Markup Language;  Yet Another Markup Language;

    ,且设置为后台运营情势,推行进度每

    source ./hacking/env-setup

    附近于半结构化数据,注脚式配置;可读性较高的用来表明资料连串的格式,易于与脚本语言交互

    2s

    pip安装: pip是设置Python包的管理器,类似yum

    官方站点: http://www.yaml.org

    出口三次进程,如

    yum install python-pip python-devel

    (2) 语法 格式

    5s

    yum install gcc glibc-devel zibl-devel rpm-bulid openssl-devel

    1) 任何书记结构都用缩进来标记,能够嵌套

    还未奉行完则甘休该任务。

    pip install --upgrade pip

    2) 每一行是二个键值数据 k ey :v alue ,冒号隔开分离。若想在一行标志要求用 { } 和 , 分隔格式

    ansible apps -a "df -lh"

    pip install ansible --upgrade

    3) 列表用 - 标识

    ansible apps -m shell -a "free -m"

    确认安装: ansible --version

    1. inventory参数 :主机库 ssh 参数设置

    ansible apps -m yum -a "name=redhat-lsb state=present"

    配备文件

    ansible基于ssh连接inventory中钦定的长途主机时,将以此处的参数钦赐的品质举行;

    ansible apps -m yum -a "name=ntp state=present"

    /etc/ansible/ansible.cfg 主配置文件,配置ansible专门的职业特点,(软连接指向新本子,方便)

    ansible_ssh_port

    指定 ssh 端口

    ansible_ssh_user

    指定 ssh 用户

    ansible_ssh_pass

    指定 ssh 用户登录是认证密码,明文密码不安全

    ansible_sudo_pass

    指明 sudo 时候的密码

    ansible apps -m service -a "name=ntpd state=started enabled=yes"

    /etc/ansible/hosts 主机清单 ,

    实��:

    ansible apps -m command -a "service ntpd status" --limit "192.168.1.22"

    /etc/ansible/roles/ 贮存角色的目录

    [websrvs]

    ###################################

    程序

    192.168.0.101  ansible_ssh_port=22  ansible_ssh_user=root  ansible_ssh_pass=xuding

    ##

    /usr/bin/ansible 主程序,不经常命令试行工具

    192.168.0.102

    增加产量客商

    /usr/bin/ansible-doc 查看配置文书档案,模块功效查看工具,相当于man命令

    瞩目:在 /etc/ansible/hosts 中一贯定义连接时候的密码不安全,一般提议依照ssh 的密钥认证方法达成

    ansible db -m user -a 'name=dba shell=/bin/bash groups=admins,dbagroup

    /usr/bin/ansible-galaxy(银河) 下载/上传卓越代码或Roles模块的官方网址平台

    3.playbooks

    append=yes home=/home/dba/ state=present'

    /usr/bin/ansible-playbook 定制自动化职务,编排剧本工具/usr/bin/ansible-pull (拉取)远程实践命令的工具

    (1) 大旨因素

    ansible db -m user -a 'name=dba groups=ddd append=no'  #

    /usr/bin/ansible-vault 文件加密工具

    Tasks 任务、 Variables 变量、 Templates 模板、 Handlers 处理器、 Roles 角色

    改造客商属性

    /usr/bin/ansible-console 基于Console界面与客商交互的试行工具

    (2)playbooks 中 定义职务:

    ansible db -m user -a 'name=dba state=absent remove=yes'  #

    长机清单inventory

    - name: task description     注释 描述音讯

    去除客户

    Inventory 主机清单

    module_name: module_args   证明模块:定义 ansible 模块参数

    ansible db -m user -a "name=tom shell=/bin/bash password=to32cxooiudsof

    ansible的入眼功能在于批量主机操作,为了方便地利用个中的局地主机,可以在inventory file中 将其分组命名

    新葡亰496net 9

    update_password=always" ##

    /etc/ansible/hosts文件格式

    (3) ansible-playbook 执行 命令:

    改换密码,密码必需团结

    inventory文件服从INI文件风格,中括号中的字符为组名。能够将同贰个主机同一时候归并到四个不等的组中;另外,当如果指标主机使用了非暗许的SSH端口,还足以在主机名称从此接纳冒号加端口号来注脚

    ansible-playbook  <filename.yml> ...  [options]

    sha-512

    ntp.magedu.com

    新葡亰496net 10

    生成

    [webservers]

    4.playbook--- 变量

    ansible xx -m win_user -a "name=stanly password=xxxxxxx group=Administrators" 

    www1.magedu.com:2222

    (1)变量命名:字母、数字和下划线组成,仅能以字母起先;

    ##win

    www2.magedu.com

    (2)变量体系:

    用户

    [dbservers]

    1) facts:由长途主机发回的主机 特有的 属性新闻,这几个音信被保存在ansible变量中;无须 申明 ,可直接调用;

    ansible xx -m mysql_user -a "login_host=localhost login_password=123456

    db1.magedu.com

    2)自定义变量:

    login_user=root name=stanly password=123456 priv=zabbix.*:ALL state=present"

    db2.magedu.com

    经过命令行传递:ansible-playbook  test.yml  --extra-vars "host=www user=test"

    ###

    db3.magedu.com

    通过roles传递

    新增

    假如主机名称遵循相似的命超形式,还足以行使列表的艺术标记各主机

    3) 主机变量:定义在inventory中的主机之后的变量; 间接传送给单个主机的变量

    mysql

    · 示例:

    实例:

    用户

    [websrvs]

    [root@localhost ~]# vim /etc/ansible/hosts 中央市直机关接定义在主机之后

    ###########################################################

    www[01:100].example.com

    [web]

    ##yaml

    [dbsrvs]

    192.168.0.101    host=mail

    语法

    db-[a:f].example.com

    192.168.0.102

    绝不选择

    ansible 配置文件

    192.168.0.103

    tab

    Ansible 配置文件/etc/ansible/ansible.cfg (一般保持默许)

    4) 组变量:定义在inventory中的组上的变量 ( 比如在默许的公文 /etc/ansible/hosts 上编辑 )

    同等阶层的因素左对齐

    [defaults]

    [group_name:vars]

    ##########

    #inventory = /etc/ansible/hosts # 主机列表配置文件

    var1=value

    ########playbook

    #library = /usr/share/my_modules/ # 库文件存放目录

    var2=value

    语法

    #remote_tmp = $HOME/.ansible/tmp #权且py命令文件存放在长距离主机目录

    注意:组名要早期存在,实比如下:

    ---  #

    #local_tmp = $HOME/.ansible/tmp # 本机的有时命令实践目录

    [websrvs]

    开头

    #forks = 5 # 私下认可并发数

    192.168.0.101

    - hosts: webservers

    #sudo_user = root # 默认sudo 用户

    192.168.0.102

    vars:

    #ask_sudo_pass = True #老是施行ansible命令是不是精通ssh密码

    [websrvs:vars]

    http_pot: 80

    #ask_pass = True

    host=mail

    max_clients: 222

    #remote_port = 22

    变量使用示例:

    remote_user: root

    #host_key_checking = False # 检核查应服务器的host_key,提出撤回注释

    [root@localhost~]# vim useradd.yml

    tasks:

    #log_path=/var/log/ansible.log #日志文件

    -    hosts: websrvs

    - name: ensdlfjsd

     

    remote_user: root

    yum: pkg=httpd state=latest

    Ansible种类命令

    vars:

    - name: xx

    ansible ansible-doc ansible-playbook ansible-vault

    username: testuser

    template: src=/srv/httpd.j2 dest=/etc/httpd.conf

      ansible-console ansible-galaxy ansible-pull

    password: xuding

    notify: restart apache

      ansible-doc: 展现模块援救

    tasks:

    - name: xx

    ansible-doc [options] [module...]

    -name: add user

    service: name=httpd state=started

    -a 展现全体模块的文书档案

    user: name={{ username }} state=present

    handlers:

    -l, --list 列出可用模块

    -name: set password

    - name: restart apache

    -s, --snippet呈现钦点模块的playbook片段

    shell: /bin/echo {{ password }} |/usr/bin/passwd --stdin {{ username }}

    service: name=httpd state=restarted

    示例:

    注释:

    #################################

    ansible-doc –l 列出装有模块

    1) {{ }} 调用变量

    ############shellplaybook

    ansible-doc ping 查看内定模块帮忙用法

    2) #ansible-playbook /PATH/TO/SOME_YAML_FILE  { -eVA奇骏S|--extra-vars=VACRUISERS}     变量的重新赋值调用方法


    ansible-doc –s ping 查看钦赐模块扶助用法

    [root@localhost ~]# ansible-playbookuseradd.yml --extra-vars "username=Ubuntu"

    - hosts: all

     

    5.playbook---  tasks

    tasks:

    ansible

    (1) 条件测验:

    - name: "setup apache"

    ansible通过ssh实现配置管理、应用陈设、职分推行等职能,建议配置ansible端能依附密钥认证的形式挂钩各被管理节点

    在某task后边增加when子句就能够完结规范测量试验功用;when语句帮衬Jinja2语法;

    command: yum install --quiet -y httpd httpd-devel

    ansible <host-pattern> [-m module_name] [-a args] (-a加参数)

        实例 : 当时 RedHat 多元系统时候调用 yum 安装

    - name: "copy configure"

    --version 显示版本

    tasks:

    command: cp /tmp/httpd.conf /etc/httpd/conf/httpd.conf

    -m module 钦命模块,默以为command

    -name: install web server package

    command: cp /tmp/httpd-vhosts.conf /etc/httpd/conf/httpd-vhosts.conf

    -v 详细进程 –vv -vvv更详尽

    yum: name=httpd state=present

    command: service httpd start

    --list-hosts 呈现主机列表,可简写—list

    when: ansible_os_family == "RedHat"

    command: chkconfig httpd on

    -k, --ask-pass 提醒输入ssh连接密码,暗许Key验证

    (2) 迭代: item

    ####################################################ansible-playbook

    -K, --ask-become-pass 提醒输入sudo时的口令

    在task中调用内置的item变量;在某task前边使用with_items语句来定义成分列表;

    ./playbook.yml

    -C, --check 检查,并不施行 (测量试验)

    tasks:

    ansible-playbook --limit xx.com

    -T, --timeout=TIMEOUT 推行命令的逾期时间,暗中同意10s

    -name: add four users

    ansible-playbook --list-hosts  #

    -u, --user=REMOTE_USETucson 实行长途推行的客户

    user: name={{ item }}  state=present

    列出怎样主机受影响

        -b, --become 取代旧版的sudo 切换

    with_items:

    --remote-user=tom

    新葡亰496net 11

    -testuser1

    #########node.js

    一、情状希图

    -testuser2

    不全

    centos7 192.168.30.110做主要调整端

    -testuser3


    192.168.30.100 、192.168.30.107 192.168.30.114 做被控端

    -testuser4

    - hosts: all

    二、搭建配置ansible

    注意:迭代中,列表中的每种元素得感觉字典格式;

    tasks:

    [root@centos7 ~]# yum -y install ansible

    实例:

    - name: gpg

    新葡亰496net 12

    -name: add two users

    rpm_key: "key={{ item }} state=present"

    翻看版本消息

    user: name={{ item.name }}  state=present groups={{ item.groups }}

    with_items:

    新葡亰496net 13

    with_items:

    - ""

    那在这之中的ping是ansible的ping模块;

    - { name: 'testuser5', groups: 'wheel' }

    - name: install remi repo

    清单列表不满含本机;

    - { name: 'testuser6', groups: 'root' }

    command: "rpm -Uvh --force {{ item.href }} creates={{ item.creates }}"

    新葡亰496net 14

    6.playbook--- handlers: 处理器;触发器

    with_items:

    把要管住的主机出席到主机清单中 etc/ansible/hosts

    独有其关心的条件满意时,才会被触发实践 的任务;

    - href: ""

    新葡亰496net 15

    实例:配置文件发出改变触发重启服务

    - creates: "/etc/yum.repos.d/remi.repo"

     

    -hosts: websrvs

    yum: name=epel-release state=present

    [root@centos7 ~]# ansible 192.168.30.100 -m ping

    remote_user: root

    service: name=iptables state=stopped

    测验存活性是遵照ssh服务的,基于密码和key验证,经常是依赖key验证;铺排是把ssh的可以评释做好

    tasks:

    service: name=firewalld state=stopped

    新葡亰496net 16

    -name: install httpd

    yum: name=npm state=present enablerepo=epel

     

    yum:name=httpd state=present

    command: npm config set registry

    新葡亰496net 17

    -name: install config file

    command: npm config set strict-ssl false

     

    copy: src=/root/httpd.confdest=/etc/httpd/conf/httpd.conf

    npm: name=forever global=yes state=latest

    建议:在支配主机登入主机的还要,假若不用老是都经过验证登入,则修改配置文件,暗中认可提供YES运营日志的效应,手动注释裁撤就行了

    notify: restart httpd

    file: "path={{ node_apps_location }} state=directory"

    [root@centos7 ~]# vim /etc/ansible/ansible.cfg

    -name: start httpd service

    copy: "src=app dest={{ node_apps_location }}"

    新葡亰496net 18

    service: name=httpd state=started

    npm: "path={{ node_apps_location }}/app"

     

    handlers:

    ########################################################ansible-playbook

    在支配端主机生成公钥,把公钥传到三台被调节端主机上去,完结key验证

    -name: restart httpd

    --extra-vars="node_apps_location=/usr/local/opt/node"

    新葡亰496net 19

    service: name=httpd state=restarted

    ###ansible

     

    7.playbook 模板

    安装配置

    可以对主机清单做分组

    templates:

    drupal

    新葡亰496net 20

    用以转移文书文件(配置文件);模板文件中可使用jinja2表明式,表明式要定义在{{}},也足以省略地仅实行变量替换;

    playbook-to-automate-drupal-installation-on-ubuntu-14-04/

     

    roles:

    ###ansible

     

    roles用于落到实处“代码复用”;

    设置配备

    ansible的Host-pattern(主机列表)

    roles以一定的档次型格式组织起来的playbook成分(variables,tasks, templates, handlers);

    tomcat  

    相配主机的列表

    可被playbook以role的名字直接进行调用;

    All :表示具有Inventory(主机清单)中的全部主机

    用法 :在 roles/ 下建立 [group_name] 子目录,并非任何都要开创;比如:

    ###ansible

    ansible all –m ping

    /etc/ansible/roles/ (在 /etc/ansible/ansible.cfg 定义 roles 目录)

    安装配置

    * :通配符

    webserver/

    JDK 

    ansible “*” -m ping

    files/:此剧中人物中用到的富有文件均放置于此目录中;

    ###handler

    ansible 192.168.1.* -m ping

    templates/:Jinja2模板文件寄存地方;

    模块

    ansible “*srvs” -m ping

    tasks/:职分列表文件;能够有多少个,但起码有一个誉为main.yml的文件;

    handlers:

    或关系

    handlers/:管理器列表文件;能够有多个,但最少有八个叫作main.yml的文件;

    - name: restart apache

    ansible “websrvs:appsrvs” -m ping

    vars/:变量字典文件;能够有七个,但起码有贰个称呼main.yml的文书;

    service: name=apache2 state=restarted

    ansible “192.168.1.10:192.168.1.20” -m ping

    meta/:此剧中人物的新鲜设定及信赖关系;

    notify: restart memcached

    逻辑与

    利用 Ansible 高效交付 Docker 容器  http://www.linuxidc.com/Linux/2015-10/124233.htm

    - name: restart memcached

    ansible “websrvs:&dbsrvs” –m ping

    运用Ansible批量管理远程服务器  http://www.linuxidc.com/Linux/2015-05/118080.htm

    service: name=memcached state=restarted

    在websrvs组而且在dbsrvs组中的主机

    Ansible安装配备与轻松利用  http://www.linuxidc.com/Linux/2015-07/120399.htm

    notify:

    逻辑非

    在 CentOS 7 中设置并采取自动化工具 Ansible  http://www.linuxidc.com/Linux/2015-10/123801.htm

    - restart apache

    ansible ‘websrvs:!dbsrvs’ –m ping

    Ansible和Docker的功能和用法  http://www.linuxidc.com/Linux/2014-11/109783.htm

    - restart memcached

    在websrvs组,但不在dbsrvs组中的主机

    Ansible批量搭建LAMP遭遇 http://www.linuxidc.com/Linux/2014-10/108264.htm

    ###################

    留意:此处为单引号

    Ansible :一个配备处理和IT自动化学工业具  http://www.linuxidc.com/Linux/2014-11/109365.htm

    ansible-playbook xx.yml --extra-vars "foo=bar"

    综合逻辑

    Ansible 的详实介绍:请点这里
    Ansible 的下载地址:请点这里

    ansible-playbook xx.yml --extra-vars "@xx.json"

    ansible ‘websrvs:dbsrvs:&appsrvs:!ftpsrvs’ –m ping

    正文永恒更新链接地址:http://www.linuxidc.com/Linux/2016-07/133466.htm

    #

    正则表达式

    新葡亰496net 21

    主机变量

    ansible “websrvs:&dbsrvs” –m ping

    host1 xx=bar  {{ hostvars['host1']['xx'] }}

    ansible “~(web|db).*.magedu.com” –m ping

    #gather_facts: no

    新葡亰496net 22

    ##

    逻辑与

    在长距离主机上

    新葡亰496net 23

    /etc/ansible/xx.fact

     

    ,则

    ansible命令实行进程

    setu

    ansible命令施行进程

    模块将再次来到

    1. 加载自个儿的配备文件 私下认可/etc/ansible/ansible.cfg

    2. 加载本人相应的模块文件,如command

    3. 通过ansible将模块或指令生成对应的暂且py文件,并将该 文件传输至远程服务器的呼应试行顾客$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件

    4. 给文件 x执行

    5. 施行并再次回到结果

    6. 剔除有时py文件,sleep 0退出

    fact

    实行意况:

    的内容

    青蓝:实行成功还要不必要做改换的操作

    [users]

    罗曼蒂克:试行成功还要对指标主机做退换

    admin=xx

    辛巳革命:实践破产

    ###

     

    ##

    ansible使用示例

    基准判别

    示范 sudo 切换身份私下认可便是root,

    - name:

    以wang客商推行ping存活体组织检查测

    [task xxx]

    ansible all -m ping -u wang -k

    when: software_version.split('.')[0] == '4'

    以wang sudo至root实行ping存活体组织检查测(用wang用户连接对方后,sudo到root身份施行操作)

    ##

    ansible all -m ping -u wang –b -k

    ##register

    以wang sudo至mage顾客施行ping存活体组织检查测

    - command: my-app --status

    ansible all -m ping -u wang –b -k --become-user mage

    register: myapp_result

    以wang sudo至root顾客实施ls

    -command: do-something-to-my-app

    ansible all -m command -u wang --become-user=root -a 'ls /root' -b –k -K

    when: "'ready' in myapp_result.stdout"

    ansible常用模块

    #myapp_result.stdout.find('xxx') == -1

    Command:在长途主机实行命令,私下认可模块,可忽略-m选项

    ####################

    ansible srvs -m command -a ‘service vsftpd start’

    ##

    ansible srvs -m command -a ‘echo magedu |passwd --stdin wang’ 不成功此命令

    如果

    新葡亰496net 24

    PHP

    不支持 $VA奇骏NAME < > | ; & 等,用shell模块达成

    新葡亰496net 25

    7

     

    ,则降级

    Shell:和command相似,用shell实践命令

    - shell: php --version

    vim /etc/ansible/ansible.cfg

    register: php_version

    新葡亰496net 26

    - shell: yum -y downgrade php*

    1:ansible srv -m shell -a ‘echo magedu |passwd –stdin wang’

    when: "'7.0' in php_version.stdout"

    :2:调用bash推行命令 类似 cat /tmp/stanley.md | awk -F‘|’ ‘{print $1,$2}’ &>/tmp/example.txt 这个复杂命令,即使使用shell也可能会退步,化解办法:写到脚本时,copy到长途,推行,再把供给的结果拉回实践命令的机器

    #####

     

    ####

    Script:运维脚本

    假设主机的

    脚本格局、用于批量进行脚本

    hosts

    -a "/PATH/TO/SCRIPT_FILE“

    不真实,就传一个文件过去

    snsible websrvs -m script -a f1.sh

    - stat: path=/etc/hosts

    在调控端的主机上编写制定三个剧本,可是运营是在被调整端的主机上

    register: hosts_file

    新葡亰496net 27

    - copy: src=path/local/file dest=/path/remote/file

     

    when: hosts_file.stat.exists == false

    Copy:从服务器复制文件到顾客端,

    ################################

    ansible srv -m copy -a “src=/root/f1.sh dest=/tmp/f2.sh owner=wang mode=600,backup=yes”

    #

      如目的存在,私下认可覆盖,此处钦点先备份

    交互

    ansible srv -m copy -a “content=‘test contentn’ dest=/tmp/f1.txt” 利用内容,间接生成目的文件

    hosts: all

    复制模块、批量复制,拷贝文件到长途主机

    vars_prompt:

    ansible [主机ip、主机组] -m copy -a "src=源文件 dest=指标路径owner=全数者 mode=权限 backup=yes/no是或不是备份"

    - name: user

    新葡亰496net 28

    prompt: "what is your name"

     

    #######confirm

    新葡亰496net 29

    为客户输入五回

    备份文件名称相比长的

    #########wait_for

    新葡亰496net 30

    模块 

     

    delegate_to

    Fetch(抓取):把远程的主机文件抓取到控住端的主机上,copy相反,目录可先tar

    模块

    ansible srv -m fetch -a ‘src=/root/a.sh dest=/data/scripts’

    tags

    新葡亰496net 31

    标签 

     新葡亰496net 32

    block

     

    块功能 

    File:设置文件属性 (删除文件的成效,成立软硬连接)

    roles

    ansible srv -m file -a "path(管理的文书)=/root/a.sh owner=wang mode=755“

    功能 

    ansible web -m file -a ‘src=/app/testfile dest=/app/testfile-link state=link(软连接)

    jinja2

    ansible all -m file -a 'path(管理的文书)=/data state=absent(递归的删除,缺席)'

    语法

    新葡亰496net 33

    #

    曾经去除data文件夹

    #######################

    新葡亰496net 34

    ######include

    还可以[root@centos7 ~]# ansible all -m file -a 'path=/data/test.txt state=touch'

    功能

    在被调控端的主机上创办test.txt 文件

    tasks:

    创建软连接

    - include: xx.yml

    新葡亰496net 35


     

    - include: xx.yml

    新葡亰496net 36

    - include: yy.yml

     

    when: extra_file.stat.exists

    Hostname:处理主机名

    ################################

    ansible node1 -m hostname -a “name=websrv”

    ansible-galaxy install username.rolename

    新葡亰496net 37

    ################################################################################

    永远生效,但hosts文件未有被改

    ####

     

    ansible all -i inventory.py -m ping  #

    Cron:安排任务

    动态创制主机

    [root@centos7 ~]# ansible-doc -s cron 调用模块

    支撑时间:minute,hour,day,month,weekday

    ansible srv -m cron -a “minute=*/5(每5分钟) job(后跟试行的下令)=‘/usr/sbin/ntpdate 172.16.0.1 &>/dev/null’

    新葡亰496net 38

     

    新葡亰496net 39

     

    name=Synctime” 成立任务

    新葡亰496net 40

     

    新葡亰496net 41

    ansible srv -m cron -a ‘state=absent name=Synctime’ 删除职分

    新葡亰496net 42

    结果

    新葡亰496net 43

     

    Yum:管理包

    ansible srv(all) -m yum -a ‘name=httpd state=latest(最新版)’ 安装

    [root@centos7 ~]# scp /etc/yum.repos.d/media.repo 192.168.30.107:/etc/yum.

    repos.d/media.repo 100% 140 64.3KB/s 00:00

    [root@centos7 ~]# ansible all -m yum -a 'name=httpd state=present'

    新葡亰496net 44

    ansible srv -m yum -a ‘name=httpd state=absent’ 删除

    新葡亰496net 45

    ansible常用模块

     

    Service:管理服务 ansible-doc -s service

    ansible all -m service -a 'name=httpd state=stopped'

    ansible all -m service -a 'name=httpd state=started'

    新葡亰496net 46

     

    ansible all –m service –a ‘name=httpd state=reloaded’

    ansible all -m service -a 'name=httpd state=restarted'

     

    User:管理顾客

    ansible all-m user -a 'name=user1 comment=“test user” uid=2048 home=/app/user1 group=root‘

    ansible all -m user -a 'name=sysuser1 system=yes home=/app/sysuser1 ’

    ansible all -m user -a ‘name=user1 state=absent remove=yes‘ 删除客户及家目录等数据

    [root@centos7 ~]# ansible all -m user -a 'name=testuser(客户名) system=yes(系统账号) groups(组)=wang,bin shell=/bin/csh' (shell类型)

    新葡亰496net 47

     

    新葡亰496net 48

     

    Group:管理组

    ansible srv -m group -a "name=testgroup(组名) system=yes“

    ansible srv -m group -a "name=testgroup state=absen(删除组)

     

    ansible类别命令

    ansible-galaxy (人们写的台本,下载ansible剧本框架工具,依照自个儿的急需下载相关的剧中人物)

    连接 下载相应的roles

    列出装有已安装的galaxy

    ansible-galaxy list(列出有哪些装好的角色)

    安装galaxy

    ansible-galaxy install geerlingguy.redis

    删除galaxy

    ansible-galaxy remove geerlingguy.redis

    ansible-pull

    推送命令至远程,功用Infiniti升高,对运转须求较高

    Ansible-playbook(剧本)

    ansible-playbook hello.yml(剧本文件)

     

    cat hello.yml

    #hello world yml file

          - hosts(主机清单): websrvs (主机清单的分组名)

            remote_user: root (远程连接以root身份)

      tasks:(任务)

          - name: hello world(之后要做的事)

            ommand: /usr/bin/wall hello world (是-a后的持有的操作)

     

    [root@centos7 ~]# vim hello.yml

    新葡亰496net 49

    [root@centos7 ~]# ansible-playbook hello.yml 用次命令实行

     

     Ansible-vault

    意义:管理加密解密yml文件

    ansible-vault [create|decrypt|edit|encrypt|rekey|view]

    ansible-vault encrypt hello.yml 加密

    ansible-vault decrypt hello.yml 解密

    ansible-vault view hello.yml 查看

    ansible-vault edit hello.yml 编辑加密文件

    ansible-vault rekey hello.yml 修改口令

    ansible-vault create new.yml 创设新文件

    Ansible-console:2.0 新扩展,可相互施行命令,支持tab

    root@test (2)[f:10] $

    进行顾客@当前操作的主机组 (当前组的主机数量)[f:并发数]$

    安装并发数: forks n 譬如: forks 10

    切换组: cd 主机组 例如: cd web

    列出当下组主机列表: list

    列出富有的放到命令: ?或help

    示例:

    root@all (2)[f:5]$ list

    root@all (2)[f:5]$ cd appsrvs

    root@appsrvs (2)[f:5]$ list

    root@appsrvs (2)[f:5]$ yum name=httpd state=present

    root@appsrvs (2)[f:5]$ service name=httpd state=started

     

     

     

     

     

     

     

     

    本文由新葡亰496net发布于电脑系统,转载请注明出处:新葡亰496netAnsible权威指南笔记,运维自动化

    关键词:

上一篇:新葡亰496net:VPS之openVPN的安装配置

下一篇:没有了