Ansible学习笔记

## 设备要求:
对管理主机的要求:安装了Python 2.6
对托管节点的要求:安装了Python 2.4及以上的版本


## Inventory 文件(INI格式)
Ansible 可同时操作属于一个组的多台主机(hosts),组和主机之间的关系通过 inventory 文件配置
可设参数:
ansible_ssh_host                 将要连接的远程主机名.
ansible_ssh_port                  ssh端口号(默认的端口号22)
ansible_ssh_user                 ssh 用户名
ansible_ssh_pass                ssh 密码(这种方式不安全,建议使用 --ask-pass 或 SSH 密钥)
ansible_sudo_pass              sudo 密码(这种方式不安全,建议使用 --ask-sudo-pass)
ansible_sudo_exe                sudo 命令路径(适用于1.8及以上版本)
ansible_connection               与主机的连接类型.比如:local, ssh 或者 paramiko.
ansible_ssh_private_key_file            ssh 使用的私钥文件.
ansible_shell_type                            目标系统的shell类型.
ansible_python_interpreter               目标主机的 python 路径.


## 动态 Inventory:
Ansible 所有 Inventory 文件里的主机列表和变量信息都支持从外部拉取,这样可以很方便地将 Ansible 与其他运维系统结合起来(比如Cobbler)。


## Ansible Ad-Hoc常用指令结构
格式:ansible -m -a
例子:ansible PXECli -m shell -a 'date'
可选参数: 
-m 模块名
-a 针对模块的具体指令,用单引号包含
-f 并行执行的设备数(默认为5)
-i 指定Inventory的路径(默认为/etc/ansible/hosts)
-u 执行用户(默认为root)
-P 后台执行(后跟数字表示隔多少秒轮询一次,为0表示静默执行)
-B 最大执行时长(单位秒)


## Ansible 配置文件
Ad-Hoc 常用指令中参数的默认值也可以通过 Ansible 的配置文件(/etc/ansible/ansible.cfg)来完成


## Ansible 帮助查询指令
ansible -h
ansible-doc -l 列出Ansible系统支持的所有模块
ansible-doc 模块的详细说明
ansible-doc -s 模块支持的操作


## Ansible Playbook
### YAML 语法总结
YAML 文件开始行都应该是"‐‐‐ " 表明一个文件的开始。
YAML 文件由一系列的"列表"组成. 列表中的每一项都是一个"字典"(键值对);
同一列表中的成员都开始于相同的缩进级别, 并且使用一个 "‐ " 作为开头;
一个字典是由一个简单的 键: 值 的形式组成(冒号后面必须是一个空格);
YAML语法要求如果值以{{ foo }}开头的话我们需要将整行用双引号包起来.


### Roles结构
Roles存在的目的是为了将Playbook进行拆分,使其结构化结合"include"功能便于重用。
Vars存在的目的是便于集中管理所有的变量。
roles及group_vars文件夹结构:
roles Roles文件夹(必须命名为roles)
├── common 角色名(可任意取名)
│   ├── handlers 存放处理异常的操作文件夹(必须命名为handlers)
│   │   └── main.yml 具体的操作写于该YAML文件中
│   ├── tasks 存放任务的文件夹(必须命名为tasks)
│   │   └── main.yml 具体的任务内容写于该YAML文件中
│   └── templates 存放模板文件的文件夹(必须命名为templates)
│       └── ntp.conf.j2 具体的模板(可多个,可任意命名,文件名结尾为"j2")
│   
└── web 同上
    ├── handlers
    │   └── main.yml
    ├── tasks
    │   ├── copy_code.yml
    │   ├── install_httpd.yml
    │   └── main.yml
    └── templates
        └── index.php.j2
group_vars Vars文件夹(必须命名为group_vars,且与roles文件夹位于同一级目录下)
│   该文件夹中文件名必须与hosts文件中组名相同  
│  
├── all 用于存放供所有组(group)访问的变量及其具体值

└── dbservers 用于存放供dbservers做访问的变量及具体值


参考:http://docs.ansible.com/ansible/intro.html

你可能感兴趣的:(运维)