ansible-playbook role 编写示例

下面是一个安装httpd软件的过程。
tasks / templates / vars 是必须的目录:

├── httpd
│   ├── tasks
│   │   ├── conf.yml
│   │   ├── group.yml
│   │   ├── httpd.yml
│   │   ├── main.yml
│   │   ├── selinux.yml
│   │   ├── service.yml
│   │   └── user.yml
│   ├── templates
│   │   └── httpd.conf.j2
│   └── vars
│       └── main.yml

 
在main.yml中包含各个单独的task:

[root@localhost roles]# cat httpd/tasks/main.yml 
- include: group.yml
- include: user.yml
- include: httpd.yml
- include: conf.yml
- include: service.yml
- include: selinux.yml

 
各个剧本:

[root@localhost roles]# cat httpd/tasks/group.yml 
- name: 创建用户组
  vars_file:
    - /etc/ansible/roles/httpd/vars/main.yml
  group: name={{ groupname }}

[root@localhost roles]# cat httpd/tasks/user.yml 
- name: 创建用户
  vars_file:
    - /etc/ansible/roles/httpd/vars/main.yml
  user: name={{ username }} system=yes group={{ groupname }}

[root@localhost roles]# cat httpd/tasks/httpd.yml 
- name: yum 安装httpd
  yum: name=httpd

[root@localhost roles]# cat httpd/tasks/conf.yml 
- name: 拷贝配置文件
  # 配置文件通过渲染完成后拷贝到被控主机
  template: src=/etc/ansible/roles/httpd/templates/httpd.conf.j2  dest=/etc/httpd/conf/httpd.conf backup=yes

    [root@localhost roles]# cat httpd/tasks/service.yml 
- name: 启动服务
  service: name=httpd state=started

[root@localhost roles]# cat httpd/tasks/selinux.yml 
- name: 关闭selinux
  shell: "sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux"

 

[root@localhost roles]# cat httpd/templates/httpd.conf.j2 
...
{% if ansible_distribution_major_version == "7" %}
Listen 77
{% else %}
Listen 8080
{% endif %}
...

 

[root@localhost roles]# cat httpd/vars/main.yml 
username: app
groupname: app

 
在roles同级别目录中定义如下调用角色的剧本,httpd是目录名字

[root@localhost ansible]# pwd
/etc/ansible
[root@localhost ansible]# cat install_apache.yml
- hosts: webs
  remote_user: root
  # 使用角色,角色名是roles下的目录名字
  roles:
    - role: httpd

 
测试剧本,执行角色剧本:

ansible-playbook -C install_apache.yml
ansible-playbook install_apache.yml 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐