ansible 学习笔记(上)
YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。其结构(structure)通过空格来展示,序列(Sequence)里的项用“-”来代表,Map里的键值对用“:”分隔。
Playbook:
Playbook的核心元素:
Hosts:主机
Tasks:任务
variables:
Templates:包含了模板的文本文件;
Handlers:由特定条件出发任务;
Roles:
playbook的基础组件
Hosts:运行指定任务的目标主机;
remoute_user:在远程主机上执行任务的用户;
sudu_user:
tasks:任务列表
模块,模块参数;
格式:
(1)action:module arguments
(2)module:arguments
handlers:
任务,在特定条件下触发;
接收到其他任务的通知时被触发;
variables:
(1)facts:可直接调用;
(2)ansible-playbook命令行中的自定义变量;
-e VARS,--extra-vars=VARS
(3)通过role传递变量;
(4)Host Inventory
(1)向不同的主机传递不同的变量;
ip/hostname varaiable=value var2=value2
(2)向组中主机传递相同的变量
variable=value
invertory参数:
用于定义ansible远程连接目标主机时的参数,而非传递给playbook的变量;
ansible_ssh_host
ansible_ssh_port
ansible_ssh_user
ansible_ssh_pass
ansible_sudo_pass
....
**注意:shell和command模块后直接跟命令即可**
**某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers;**
**任务可以通过“tags”打标签,而后可在ansible-playbook命令上使用-t指定进行调用;**
playbook的使用方法:
ansible-playbook在执行命令时,第一个任务执行完成后执行第二个任务,第二个执行完成后,执行第三个任务;
ansible-playbook
--list-host //显示执行的主机列表;
--check //在目标主机进行检测可能会发生改变,但并不执行;
-t tags //指明任务
ansible-palybook -t instconf web.yml//进行标签为instconf的项目;
playbook示例1:编写sample.yaml
- hosts: remote_user:root
tasks:
- name: create a user user3
user: name=user3 system=true uid=307
- name: creare a user user4
user: name=user4 system=true uid=308
playbook示例2:编写web.yml
- hosts: websrvs remote_user: root
tasks:
- name: install httpd package yum: name=httpd state=present
- name: install configure file
copy: src=files/httpd.conf dest=/etc/httpd/conf/ //src为相对路径
tags: instconf
notify: restart httpd
- name: start httpd.service
serivce: name=httpd state=started
-name: execute ss command
shell: ss -tnl | grep 8080
- handlers:
- name: restart httpd
service: name=httpd state=restarted
页:
[1]