## 设备要求:
对管理主机的要求:安装了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 <hosts_name/inventory_file> -m <module_name> -a <arguments>
例子: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 <module_name> 模块的详细说明
ansible-doc -s <module_name> 模块支持的操作
## 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)访问的变量及其具体值
对管理主机的要求:安装了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 <hosts_name/inventory_file> -m <module_name> -a <arguments>
例子: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 <module_name> 模块的详细说明
ansible-doc -s <module_name> 模块支持的操作
## 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做访问的变量及具体值