精华内容
下载资源
问答
  • 基于 Ansible playbook 快速构建起LNMP环境的实战的第一篇 。   1、环境描述 软件 版本 OS CentOS 7.4 Ansible 2.4.2 (extra仓库) Nginx 1.16.1(epel仓库) PHP 5.4.16 Mysql ...
  • ansible-playbook -i hosts.yml site.yml 瞧! 127.0.0.1:6379> CLUSTER NODES 08f2a5b901af30317006c1c46c3141f01665f83f 10.209.69.221:6379 master - 0 1426120440033 6 connected 5461-10922 b64ffb6cdc58c...
  • ansible-playbook_rabbitmq

    2019-11-25 15:43:40
    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口...
  • openssh升级ansible-playbook
  • playbook

    2020-09-01 19:26:26
    1. 实施playbook 1.1 Ansible Playbook与临时命令 临时命令可以作为一次性命令对一组目标主机运行一项简单的任务。不过,若要真正发挥Ansible的力量,需要了解如何使用playbook以便轻松重复的方式对一组目标主机执行...

    1. 实施playbook

    1.1 Ansible Playbook与临时命令

    临时命令可以作为一次性命令对一组目标主机运行一项简单的任务。不过,若要真正发挥Ansible的力量,需要了解如何使用playbook以便轻松重复的方式对一组目标主机执行多项复杂的任务。

    play是针对清单中选定的主机运行的一组有序任务。playbook是一个文本文件,其中包含由一个或多个按特定顺序运行的play组成的列表。

    Play可以将一系列冗长而复杂的手动管理任务转变为可轻松重复的例程,并且具有可预测的成功成果。在playbook中,可以将play内的任务序列保存为人类可读并可立即运行的形式。根据任务的编写方式,任务本身记录了部署应用或基础架构所需的步骤。

    1.2 编写&运行Playbook

    例子:现在用playbook来编写一个任务,来控制受控机的postfix服务

    1. 在主控机的根目录下创建一个playbook的目录,并进入该目录
    [root@ansible ~]# ls
    anaconda-ks.cfg  hehe  hosts  test.sh
    [root@ansible ~]# mkdir /playbook
    [root@ansible ~]# cd /playbook
    
    1. 因Playbook是以YAML格式编写的文本文件,通常使用扩展名yml保存。
      这时vim进入myplay.yml编写
    [root@ansible playbook]# vim myplay.yml
    
    ---
    - name: 服务控制
      hosts: 192.168.50.134
      task:
        - name: 关闭postfix服务
          service:
            name: postfix
            state: stopped
            enabled: no
    
    1. absible-playbook命令可用于运行playbook。该命令在控制节点上执行,要运行的playbook的名称则作为参数传递。
    [root@ansible playbook]# ansible-playbook myplay.yml 
    PLAY [服务控制] ********************************************************************
    
    TASK [Gathering Facts] *********************************************************
    ok: [192.168.50.134]
    
    TASK [关闭postfix服务] *************************************************************
    changed: [192.168.50.134]
    
    PLAY RECAP *********************************************************************
    192.168.50.134             : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    
    
    
    PLAY RECAP是运行它的运行结果
    
    1. 在受控机上查看运行结果
    [root@localhost ~]# systemctl status postfix
    ● postfix.service - Postfix Mail Transport Agent
       Loaded: loaded (/usr/lib/systemd/system/postfix.service; disabled; vendor preset: disabled)
       Active: inactive (dead)
    
    ......
    

    1.3 注意事项

    1. 编写时注意事项:
    • Playbook使用空格字符缩进来表示其数据结构。YAML对用于缩进的空格数量没有严格的要求,但有两个基本的规则:

      • 处于层次结构中同一级别的数据元素(例如同一列表中的项目)必须具有相同的缩进量。
      • 如果项目属于其他项目的子项,其缩进量(空格数)必须大于父项。
    • 只有空格字符可用于缩进,不允许使用tab键。约定俗成的缩进量一般是一级2个空格。

    • Playbook开头的一行由三个破折号(—)组成,这是文档开始标记。其末尾可能使用三个圆点(…)作为文档结束标记,尽管在实践中这通常会省略。

    • 两个标记之间,会以一个play列表的形式来定义playbook。YAML列表中的项目以一个破折号加空格开头。

    • Play本身是一个键值对集合。同一play中的键应当使用相同的缩进量。

    • playbook中play和任务列出的顺序很重要,因为Ansible会按照相同的顺序运行它们。

    1. 运行时注意事项:
    • 在playbook运行时,屏幕中会显示每个play和任务的name键的值。(Gathering Facts任务是一项特别的任务,setup模块通常在play启动时自动运行这项任务。)对于含有多个play和任务的playbook,设置name属性后可以更加轻松地监控playbook执行的进展。
    • Ansible Playbook中的任务是幂等的,而且能够安全地多次运行playbook。如果目标受管主机已处于正确的状态,则不应进行任何更改。如果再次运行这个playbook,所有任务都会以状态OK传递,且不报告任何更改。

    1.4 提高输出的详细程度

    ansible-playbook命令提供的默认输出不提供详细的任务执行信息。ansible-playbook -v命令提供了额外的信息,总共有四个级别。

    1. -v :显示任务结果
    2. -vv :任务结果和任务配置都会显示
    3. -vvv :包含关于与受管主机连接的信息
    4. -vvvv :增加了连接插件相关的额外详细程序选项,包括受管主机上用于执行脚本的用户以及所执行的脚本

    1.5 语法验证

    在执行playbook之前,最好要进行验证,确保其内容的语法正确无误。
    –syntax-check可用于验证playbook的语法。

    • 语法正确时
    [root@ansible ~]# cd /playbook
    [root@ansible playbook]# ls
    myplay.yml
    [root@ansible playbook]# ansible-playbook --syntax-check myplay.yml
    
    playbook: myplay.yml
    
    
    • 语法验证失败时,将报告语法错误
    [root@ansible playbook]# ansible-playbook --syntax-check myplay.yml
    ERROR! We were unable to read either as JSON nor YAML, these are the errors we got from each:
    JSON: Expecting value: line 1 column 1 (char 0)
    
    Syntax Error while loading YAML.
      mapping values are not allowed in this context
    
    The error appears to be in '/playbook/myplay.yml': line 2, column 7, but may
    be elsewhere in the file depending on the exact syntax problem.
    
    The offending line appears to be:
    
    ----
    - name: 服务控制
          ^ here
    

    1.6 执行空运行

    可以使用-C选项对playbook执行空运行。这会使Ansible报告在执行该playbook时将会发生什么更改,但不会对受管主机进行任何实际的更改。

    [root@ansible playbook]# ansible-playbook -C myplay.yml
    
    PLAY [服务控制] ********************************************************************
    
    TASK [Gathering Facts] *********************************************************
    ok: [192.168.50.134]
    
    TASK [关闭postfix服务] *************************************************************
    changed: [192.168.50.134]
    
    PLAY RECAP *********************************************************************
    192.168.50.134             : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    
    
    

    2.实施多个play

    2.1 缩写多个play

    Playbook是一个YAML文件,含有由一个或多个play组成的列表。因此,如果一个playbook中有多个play,每个play可以将其任务应用到单独的一组主机。
    我们可以这样进行编写:对一组主机运行一个play,完成后再对另一组主机运行另一个play。
    缩写包含多个play的playbook非常简单。Playbook中的各个play编写为playbook中的顶级列表项。各个play是含有常用play关键字的列表项。
    以下示例显示了含有两个play的简单playbook。第一个play针对192.168.50.134运行,第二个play则针对192.168.50.135运行。

    ---
    #This is a simple playbook with two plays
    
    - name: first play
      hosts: 192.168.50.134
      tasks:
        - name: first task
          yum:
            name: httpd
            status: present
    
        - name: second task
          service:
            name: httpd
            enabled: true
    
    - name: second play
      hosts: 192.168.50.135
      tasks:
        - name: first task
          service:
            name: mariadb
            enabled: true
    

    2.2 play中的远程用户和特权升级

    Play可以将不同的远程用户或特权升级设置用于play,取代配置文件中指定的默认设置。这些在play本身中与hosts或tasks关键字相同的级别上设置。

    2.2.1 用户属性

    playbook中的任务通常通过与受管主机的网络连接来执行。与临时命令相同,用于任务执行的用户帐户取决于Ansible配置文件/etc/ansible/ansible.cfg中的不同关键字。运行任务的用户可以通过remote_user关键字来定义。不过,如果启用了特权升级,become_user等其他关键字也会发生作用。
    如果用于任务执行的Ansible配置中定义的远程用户不合适,可以通过在play中使用remote_user关键字覆盖。

    #remote_user = root
    

    2.2.2 特权升级属性

    Ansible也提供额外的关键字,从而在playbook内定义特权升级参数。become布尔值关键字可用于启用或禁用特权升级,无论它在Ansible配置文件中的定义为何。它可取yes或true值来启用特权升级,或者取no或false值来禁用它。

    become: yes
    

    如果启用了特权升级,则可以使用become_method关键字来定义特定play期间要使用的特权升级方法。
    以下示例中指定sudo用于特权升级:

    become_method: sudo
    

    此外,启用了特权升级时,become_user关键字可定义特定play上下文内要用于特权升级的用户帐户。

    become_user: root
    
    ---
    - name: 服务控制
      hosts: 192.168.50.134
      remote_user: tom
      become: yes
      become_method: sudo
      become_user: root
      tasks:
        - name: 关闭postfix服务
          service:
            name: postfix
            state: stopped
            enabled: no
    
    

    以下示例演示了如何在play中使用这些关键字:

    • 在受控机hosts里编写一个网址
    [root@localhost ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    [root@localhost ~]# echo '1.1.1.1 www.a.com' >> /etc/hosts
    [root@localhost ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    1.1.1.1 www.a.com
    
    
    • 在主控机里编写
    ---
    - hosts: 192.168.50.134
      remote_user: tom
      become: yes
    
    
      tasks:
        - name: jjyy
          lineinfile:
            path: /etc/hosts
            line: '1.1.1.1 www.a.com'
            state: present
    
    
    
    • 检查语法是否有问题
    [root@ansible playbook]# ansible-playbook --syntax-check myplay.yml
    
    playbook: myplay.yml
    

    2.3 查找用于任务的模块

    2.3.1 模块文档

    Ansible随附打包的大量模块为管理员提供了许多用于常见管理任务的工具。前面我们介绍了Ansible官方网站的帮助文档链接https://docs.ansible.com/。通过模块索引,可以很轻松的找到对应的模块。例如,适用于用户和服务管理的模块可以在Systems Modules下找到,而适合数据库管理的模块则可在Database Modules下找到。

    对于每一个模块,Ansible官网提供了其功能摘要,以及关于如何通过模块的选项来调用各项具体功能的说明。文档还提供了实用的示例,演示各个模块的用法,以及任务中关键字的设置方法。

    前面我们用到过ansible-doc -l命令。这将显示模块名称列表以及其功能的概要。

    ansible-doc -l
    

    使用ansible-doc [module name]命令来显示模块的详细文档。与Ansible官网一样,该命令提供模块功能的概要、其不同选项的详细信息,以及示例。

    ansible-doc yum     # 显示yum模块的帮助文档
    

    ansible-doc命令还提供-s选项,它会生成示例输出,可以充当如何在playbook在使用特定模块的示范。此输出可以作为起步模板,包含在实施该模块以执行任务的playbook中。输出中包含的注释,提醒管理员各个选项的用法。下例演示了yum模块的这种输出:

    ansible-doc -s yum
    

    使用ansible-doc命令可以查找和了解如何使用模块。尽管command、shell和raw模块的用法可能看似简单,但在可能时,应尽量避免在playbook中使用它们因为它们可以取胜任意命令,因此使用这些模块时很容易写出非幂等的playbook。
    例如,以下使用shell模块的任务为非幂等。每次运行play时,它都会重写/etc/resolv.conf,即使它已经包含了行nameserver 192.168.50.134。

    - name: Non-idepotent approach with shell module
      shell: echo "nameserver 192.168.50.134" > /etc/resolv.conf
    

    可以通过多种方式编写以幂等方式使用shell模块的任务,而且有时候进行这些更改并使用shell是最佳的做法。但更快的方案或许是使用ansible-doc发现copy模块,再使用它获得所需的效果。
    在以下示例中,如果/etc/resolv.conf文件已包含正确的内容,则不会重写该文件:

    - name: Idempotent approach with copy module
      copy:
        dest: /etc/resolv.conf
        content: "nameserver 172.16.103.2\n"
    

    copy模块可以测试来了解是否达到了需要的状态,如果已达到,则不进行任何更改。shell模块容许非常大的灵活性,但需要格外小心,从而确保它以幂等方式运行。
    幂等的playbook可以重复运行,确保系统处于特定的状态,而不会破坏状态已经正确的系统。

    2.3.2 Playbook语法变化

    YAML注释
    注释也可以用于提高可读性。在YAML中,编号或井号字符(#)右侧的所有内容都是注释。如果注释的左侧有内容,请在该编号符号的前面加一个空格。

    # This is a YAML comment
    some data # This is also a YAML comment
    

    YAML字符串
    YAML中的字符串通常不需要放在引号里,即使字符串中包含空格。字符串可以用双引号或单引号括起。

    this is a string
    
    'this is another string'
    
    "this is yet another a string"
    

    编写多行字符串有两种方式。可以使用管道符表示要保留字符串中的换行字符。

    include_newlines: |
      Example Company
      123 Main Street
      Atlanta, GA 30303
    

    要编写多行字符串,还可以使用大于号字符来表示换行字符转换成空格并且行内的引导空白将被删除。这种方法通常用于将很长的字符串在空格字符处断行,使它们跨占多行来提高可读性。

    fold_newlines: >
      This is an example
      of a long string,
      that will become
      a single sentence once folded.
    

    YAML字典
    下面是一个简单的字典形式:

    name: svcrole
    svcservice: httpd
    svcport: 80
    

    字典也可以使用以大括号括起的内联块格式编写,如下所示:
    {name: svcrole, svcservice: httpd, svcport: 80}
    大多数情况下应避免内联块格式,因为其可读性较低。不过,至少有一种情形中会较常使用它。当playbook中包含角色列表时,较常使用这种语法,从而更加容易区分play中包含的角色和传递给角色的变量。
    YAML列表
    最简单的列表如下:

    hosts:
      - servera
      - serverb
      - serverc
    

    列表也有以中括号括起的内联格式,如下所示:

    hosts: [servera, serverb, serverc]
    

    我们应该避免使用此语法,因为它通常更难阅读。

    2.3.3 过时的“键=值” playbook简写

    某些playbook可能使用较旧的简写方法,通过将模块的键值对放在与模块名称相同的行上来定义任务。例如,你可能会看到这种语法:

    tasks:
      - name: shorthand form
        service: name=httpd enabled=true state=started
    

    通常我们应该将这样的语法编写为如下所示:

    tasks:
      - name: normal form
        service:
          name: httpd
          enabled: true
          state: started
    

    通常我们应避免简写形式,而使用普通形式。
    普通形式的行数较多,但更容易操作。任务的关键字垂直堆叠,更容易区分。阅读play时,眼睛直接向一扫视,左右运动较少。而且,普通语法是原生的YAML。
    你可能会在文档和他人提供的旧playbook中看到这种语法,而且这种语法仍然可以发挥作用。

    展开全文
  • UI Playbook致力于记录常见的UI组件,其功能,最佳实践,可访问性要求和示例。 动机 :thinking_face: 在启动我的第一个设计系统时,大多数时候我会参考其他设计系统以获取启发和指导,而只是找到单个用户界面模式的...
  • 每个playbook中的play 都必须包含 hosts 和 tasks两个项 列表 使用“-”作为列表项,一个“-”代表一个任务,某项是一个动作,一个对象,或一个实体时,都加‘-’ 例1: zhangsan lisi wangwu 例2: [zhangsan,lisi,...
  • codis 中间件
  • ansible-lvm 使用 playbook 运行基本 lvm 命令的 ansible 模块
  • 7.2: sudo提权 、 Ansible配置 、 Ansible Playbook 、 Ans.docx
  • The Hacker Playbook provides them their own game plans. Written by a longtime security professional and CEO of Secure Planet, LLC, this step-by-step guide to the “game” of penetration hacking ...
  • The Hacker Playbook 2 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn...
  • 在BlackBerry 10和PlayBook上列出,管理和安装应用程序。 通过Google Chrome和Mozilla Firefox的扩展程序在BlackBerry 10 / PlayBook上列出,管理和安装应用程序。 更多信息和帮助-------------------------有关更多...
  • The-hacker-playbook3最新版PDF,从某安全群里面分享得到,同步共享给大家
  • Ansible Playbook设置我的一些服务器 这是设置我的某些服务器的Ansible手册。 包括我的某些域的Web服务器和我的邮件服务器。 有关更多常规信息,请在docs/文件夹中查看。 有关高度准确的信息,以及当您对site.yml...
  • Ansible Playbook Grapher 是用于创建表示您的Ansible剧本任务和角色的图形的命令行工具。 该项目的目的是快速了解您的剧本。 受启发。 先决条件 Python 3 Ansible > = 2.8:如果您仍使用旧版本的Ansible,请创建...
  • docker run -t --rm -v $( pwd ) /my-local-playbook:/playbook isometimescode/ansible-playbook --version 运行一个容器并用您的剧本内容装入一个卷以执行播放 docker run -it --rm -v $( pwd ) /my-local-...
  • Playbook是一个库,它为构建UI组件提供了一个沙箱,而无需担心特定于应用程序的依赖关系,这是受Web前端开发中的 for JavaScript强烈启发的。 使用Playbook构建的组件可以生成一个独立的应用,作为生活指南。 这样...
  • ##playbook-raspi_kernel_crosscompile 在您强大的机器上本地交叉编译 linux 内核和模块。 有关详细说明,请参阅 。 使用您的本地计算机密码编辑host_vars/localhost.yml以用于 sudo 目的。 ansible-playbook -i ...
  • 这个 Playbook的仓库,可以快速配置iOS开发需要的一些服务。 ,如果预算充裕,直接使用优质的收费服务更省时省力。 因为功耗有限,大部分配置只在64位Debian Jessie (Debian 8)上跑通部署测试,理论上Ubuntu 14.04...
  • 为Azure构建Ansible Playbook的示例和最佳实践 适用于Azure的Ansible剧本 此存储库包含为Azure构建Ansible Playbook的示例和最佳实践。 先决条件 Azure帐户。 如果您没有,请获得。 若要向Azure进行身份验证,请...
  • 使用Ansible Playbook进行生产级别的高可用kubernetes扩展部署,包括初始化系统配置,自动签发证书,安装配置等的配置,安装配置haproxy&keepalive,calico,coredns,metrics-server等,并使用bootstrap方式认证...
  • Ansible playbook检查漏洞。 这是基于芝加哥大学提供的测试程序()。 Ansible 将允许您一次指定大量主机进行测试。 这不会修补或重新启动任何东西,它只会报告您的系统是否受到影响。 假设gcc是远程安装的。 ...
  • The Hacker Playbook 3

    2019-05-17 08:12:22
    The hacker playbook第三版(包含mobi,azw3,epub与pdf格式), The Hacker Playbook 3 (THP3) takes your offensive game to the pro tier. With a combination of new strategies, attacks, exploits, tips and ...
  • 之前介绍了关于ansible的安装与使用(包括模块与playbook使用,地址是//www.jb51.net/article/52154.htm),今天介绍一下如何使用playbook来部署zabbix客户端。 ansible服务端的环境为centos 6.5 x86_64系统 ansible...
  • $ ansible-playbook --ask-become-pass playbook.yaml 将安装默认的剧本版本。检查手册中的jdk_major和jdk_build,以了解将安装哪个版本。 安装特定的JDK $ ansible-playbook --ask-become-pass --extra-vars " jdk...
  • Ansible Playbook Generator Angular UI 开始之前,有关Ansible Docs的详细信息,请参阅 该项目是使用版本8.3.29生成的。 开发服务器 为开发服务器运行ng serve 。 导航到http://localhost:4200/ 。 如果您更改...
  • 中英两个版本都有,可以相互参考着看。推荐看原版。目前已经有第三版了。
  • Ansible playbook 用于安装和设置 Redis 新贵服务。 用法 使用要在其上运行 Node.js 或使用$ANSIBLE_HOSTS的服务器创建清单文件。 如果与 root 连接: ansible-playbook -i hosts -u root main.yml 如果执行: ...
  • ansible-playbook-源码

    2021-05-24 23:53:46
    Ansible-Playbook 使用ansible-playbook批量安装常用软件。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,542
精华内容 11,016
关键字:

playbook