82 lines
1.3 KiB
Markdown
82 lines
1.3 KiB
Markdown
---
|
|
title: Ansible
|
|
category: Ruby
|
|
---
|
|
|
|
## Looping
|
|
|
|
### Array (with_items)
|
|
|
|
```yaml
|
|
vars:
|
|
security_groups:
|
|
- name: 'hello'
|
|
desc: 'world'
|
|
|
|
- name: 'hola'
|
|
desc: 'mundo'
|
|
|
|
tasks:
|
|
- name: Create required security groups
|
|
ec2_group:
|
|
name: "{{ item.name }}"
|
|
description: "{{ item.desc }}"
|
|
with_items: "{{ security_groups }}"
|
|
```
|
|
|
|
### Object (with_dict)
|
|
|
|
```yaml
|
|
tasks:
|
|
- name: Print phone records
|
|
debug: msg="User {{ item.key }} is {{ item.value.name }} ({{ item.value.telephone }})"
|
|
with_dict: "{{ users }}"
|
|
```
|
|
|
|
## with_file
|
|
|
|
```yaml
|
|
- name: "Send key"
|
|
ec2_key:
|
|
key_material: "{{ item }}"
|
|
with_file: ./keys/sshkey.pub
|
|
|
|
# or
|
|
with_fileglob: ./keys/*.pub
|
|
```
|
|
|
|
### Conditionals
|
|
|
|
```yml
|
|
- include: setup-debian.yml
|
|
when: ansible_os_family == 'Debian'
|
|
|
|
when: (ansible_distribution == "CentOS" and ansible_distribution_major_version == "6") or
|
|
(ansible_distribution == "Debian" and ansible_distribution_major_version == "7")
|
|
|
|
|
|
# Just like "and"
|
|
when:
|
|
- ansible_distribution == "CentOS"
|
|
- ansible_distribution_major_version == "6"
|
|
```
|
|
|
|
## Expressions
|
|
|
|
```
|
|
{{ item }}
|
|
{{ item.name }}
|
|
{{ item[0].name }}
|
|
|
|
{{ item | default('latest') }}
|
|
```
|
|
|
|
## Includes
|
|
|
|
```
|
|
tasks:
|
|
- include: wordpress.yml
|
|
vars:
|
|
wp_user: timmy
|
|
```
|