zoukankan      html  css  js  c++  java
  • Ansible--初始ansible

    一、ansible简介

    ansible是一种自动化运维工具。实现批量操作系统配置、批量程序部署、批量命令运行等功能。

    ansible工作在agentless模式下,并且具有幂等性(幂等性不会重复执行相同指令,例如不会重复安装软件,当你希望一个文件中存在一行内容为 "aaaaaa", 如果不存在就会插入,如果存在就会跳过)。

    ansible架构大致如下:

    二、基本使用

    1、定义Host Inventory   /etc/ansible/hosts

    [webhosts]

    172.16.10.22 ansible_ssh_user=root ansible_ssh_pass=passwd

    172.16.10.33 ansible_ssh_user=root ansible_ssh_pass=passwd

    ## ansible_ssh_user=root 是登陆用户

    ## ansible_ssh_pass=passwd 是ssh登陆密码

    ## 使用 ansible-doc MOD 查看模块的用法,例如 ansible-doc copy

    2.示例使用

    查看时间信息

    添加用户,user模块

    安装软件和启动服务

    支持管道服务

    三、YAML语言介绍

    YAML是一种可读性高的用来表达资料序列的格式。

    YAML Ain't Markup Language即YAML不是XML。

    YAML的可读性好

    YAML和脚本语言的交互性好

    YAML使用实现语言的数据类型

    YAML有个一致的信息模型

    YAML表达能力强扩展性好

    1. YAML 简介

    *********************************************YAML语法

    YAML语法可以简单表达清单、散列表、标量等数据结构。其结构Structure通过空格展示,序列Sequence的项用“-”来代表

    Map里的键值对用“:”分割。下面是一个示例:

    name: Jonh Smith

    age: 41

    gender: Male

    YAML 2个重要的结构组成部分list和directory

    ********************************************list

    列表的所有元素均使用“-”开始,例如:

    - Apple

    - Orange

    - Strawberry

    - Mango

    ********************************************dictionary

    字典通过key与value标识,例如:

    ---

    name: Example Developer

    job: Developer

    skill: Elite

    也可以将key:value放置于{ }进行表示,例如:

    ---

    {name: Example Developer, job: Developer, skill: Elite}

    2.YAML的变量

    ########################### 变量命名

    变量名仅支持字母、数字和下划线并且只能以字母开头

    facts 是由正在通信的远程目标主机发回的信息,这些信息保存在ansible变量中。获取facts可使用如下命令:

    # ansible webservers -m setup

    ########################### 自定义变量

    使用关键字vars来定义变量

    vars:

    var_name: value

    ########################### 变量引用

    {{ var_name }}

    ######################### 变量迭代

     当需要重复执行任务时使用迭代机制,使用格式为:将需要迭代的内容定义为item变量引用,并通过with_items语句指明迭代的元素列表。

    例如:

    - name: add several users

    vars:

    user1: testuser1

    user2: testuser2

    user: name={{ user1 }} state=present group=wheel

    user: name={{ user2 }} state=present group=wheel

     使用迭代方式:

    - name: add several users

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

    with_items:

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

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

     3. Invetory格式

    inventory文件遵循INI文件风格(括号中的字符串为组名)。可以将同一个主机同时归并到不同的组中,当目标主机使用非默认的SSH端口,还可以在主机名称之后使用冒号加端口来表明。

    [webservers]

    www1.webserver.com:2222

    www2.webserver.com

    ############################主机变量

    可以在inventory中定义主机时,添加主机变量以便于在playbook中使用,例如

    www1.webserver.com http_port=80 maxRequestPerChild=808

    ############################ 组变量

    组变量是赋予制定组内所有主机的playbook可用的变量。例如:

    [webservers]

    www1.webserver.com

    www2.webserver.com

    [webservers:vars]

    ntp_server=ntp.webserver.com

    nfs_server=nfs.webserver.com

    ############################  组嵌套

    inventory中组可以包含其他的组,并且也可以向组中的主机指定变量。

    [apache]
    httpd1.magedu.com
    httpd2.magedu.com

    [nginx]
    ngx1.magedu.com
    ngx2.magedu.com

    [webservers:children]
    apache
    nginx

    ############################  inventory参数

    ansible_ssh_host # 主机名

    ansible_ssh_port # 端口号,默认22

    ansible_ssh_user # ssh连接时默认用的用户名

    ansible_ssh_pass # ssh连接时的密码

    4. playbooks

    ############################ Hosts和Users

  • 相关阅读:
    SQLServer2005安装提示服务无法启动解决方法
    如何处理SQL Server2005配置管理器打不开的问题!
    如何卸载oracle 10g数据库
    Gesture实现手势滑动效果
    为android虚拟机配置正确的DNS服务器地址
    a链接事件点击函数
    web 音频文件自动播放(兼容所有浏览器)
    关于Jquery中的$.each获取各种返回类型数据的使用方法
    jquery如何在异步方式中给全局变量赋值
    jquery的blur之后,focus获取不到焦点的解决办法
  • 原文地址:https://www.cnblogs.com/albertarmstrong/p/7604613.html
Copyright © 2011-2022 走看看