Skip to content

Commit

Permalink
Merge pull request #7 from Otus-DevOps-2018-09/ansible-1
Browse files Browse the repository at this point in the history
Ansible 1
  • Loading branch information
Kirill-Garbar authored Nov 12, 2018
2 parents b2a86c7 + 2ff47fc commit 35c189c
Show file tree
Hide file tree
Showing 9 changed files with 96 additions and 0 deletions.
27 changes: 27 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,3 +142,30 @@ gcloud compute firewall-rules create default-puma-server \
- Выполнить terraform init и terraform apply(Команда создаст бакет для хранения tfstate).
- Перейти в директорию stage. Создать terraform.tfvars из terraform.tfvars.example, указать свой проект и заполнить другие переменные. Если необходимо добавить provisioners, указать переменную provisioner_condition = 1.
- Выполнить terraform init и terraform apply(Команда создаст инфраструктуру с приложением).

# HW-8
## В процессе сделано
- Интегрировал своё окружение на Windows с Linux. Git остался на Windows, в Linux подключил раздел по cifs.
- Установили Python2.7, pip, Ansible.
- Заполнили инвентори в формате ini, конфиг, попинговали хосты.
- Перевели инвентори в формат YAML.
- Сравнили shell/command, command/service/systemd, command/git.
- Написали просто плейбук на git clone. См. наблюдения в следующем пункте.
- Ознакомились с форматом JSON инвентори. Используется для автоматизации получение инвентори.
- Два формата. Практически плоский JSON со ссылочной структурой родитель-ребёнок и JSON с иерархической структурой (копия YAML). Первый нужно "скормить" Ансиблу в виде исполняемого скрипта, который возвращает JSON, второй возможно "скормить" в виде файла (команды см. в п. ниже).

## Выполнение простого плейбука.
- Первый раз выполнили плейбук, когда приложение уже было склонировано. Ансибл вернул по всем шагам OK. Удалили склонированный репозиторий и снова выполнили ту же команду. Анмибл вернул changed по задаче клонирования репозитория.

## Команды для использования JSON инвентори.
```
ansible app -m ping -i get-inventory.sh
ansible app -m ping -i inventory.json
```

## Как проверить работоспособность.
- Забрать ветку ansible-1.
- Перейти в директорию terraform/stage
- Выполнить terraform init && terraform apply, получить IP адреса (ключи пользователя appuser должны быть в домашней директории ~/.ssh).
- Заменить IP адреса из инвентори (8.8.8.8 и 9.9.9.9).
- Выполнить команды из п. выше.
6 changes: 6 additions & 0 deletions ansible/ansible.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[defaults]
inventory = ./inventory
remote_user = appuser
private_key_file = ~/.ssh/appuser
host_key_checking = False
retry_files_enabled = False
8 changes: 8 additions & 0 deletions ansible/clone.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
- name: Clone
hosts: app
tasks:
- name: Clone repo
git:
repo: https://github.com/express42/reddit.git
dest: /home/appuser/reddit
2 changes: 2 additions & 0 deletions ansible/get-inventory.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
cat inventory2.json
4 changes: 4 additions & 0 deletions ansible/inventory
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[app]
appserver ansible_host=8.8.8.8
[db]
dbserver ansible_host=9.9.9.9
16 changes: 16 additions & 0 deletions ansible/inventory.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"app": {
"hosts": {
"appserver": {
"ansible_host": "8.8.8.8"
}
}
},
"db": {
"hosts": {
"dbserver": {
"ansible_host": "9.9.9.9"
}
}
}
}
9 changes: 9 additions & 0 deletions ansible/inventory.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
app:
hosts:
appserver:
ansible_host: 8.8.8.8

db:
hosts:
dbserver:
ansible_host: 9.9.9.9
23 changes: 23 additions & 0 deletions ansible/inventory2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"app": {
"children": [
"appserver",
"dbserver"
]
},
"db": {
"children": [
"dbserver"
]
},
"appserver": {
"hosts": [
"8.8.8.8"
]
},
"dbserver": {
"hosts": [
"9.9.9.9"
]
}
}
1 change: 1 addition & 0 deletions ansible/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ansible>=2.4

0 comments on commit 35c189c

Please sign in to comment.