This document outlines the presentation "The Ansible automated configuration tips of modern IT engineer must be know (2/e)". It begins with an introduction of the speaker and their experience with Ansible. The outline includes sections on what a modern IT engineer is, the benefits of automated configuration tools, what Ansible is, how to deploy an Ansible environment, and how to use Ansible. Key points are that Ansible is an easy to use configuration management tool that reduces errors and makes infrastructure testing and deployment easier. The document provides examples of using Ansible ad-hoc commands and playbooks to automate tasks.
1. [ jonny@latticework ~ ] $ cat .profile
# Author: chusiang (at) drx.tw
# Blog: http://note.drx.tw
# Modified: 2017-03-10 18:43
The Ansible automated configuration tips
of modern IT engineer must be know (2/e)
2. About Me
• Chu-Siang Lai
• More than 1 year experience
in Ansible use.
• Maintaining Ansible Roles:
• php7 (php-fpm)
• switch-apt-mirror
• vim-and-vi-mode
• zabbix-agent
2
5. Outline
I. What is the modern IT Engineer ?
II. What are the benefits of use an automated
configuration management tool ?
5
6. Outline
I. What is the modern IT Engineer ?
II. What are the benefits of use an automated
configuration management tool ?
III. What is the Ansible ?
6
7. Outline
I. What is the modern IT Engineer ?
II. What are the benefits of use an automated
configuration management tool ?
III. What is the Ansible ?
IV. How to deploy the Ansible environment ?
7
8. Outline
I. What is the modern IT Engineer ?
II. What are the benefits of use an automated
configuration management tool ?
III. What is the Ansible ?
IV. How to deploy the Ansible environment ?
V. How to use the Ansible ?
8
9. Outline
I. What is the modern IT Engineer ?
II. What are the benefits of use an automated
configuration management tool ?
III. What is the Ansible ?
IV. How to deploy the Ansible environment ?
V. How to use the Ansible ?
VI. Q & A
9
11. What is modern IT Engineer ?
11
CLASSICS MODERN
UP AND RUNNING More than hours Less than 30 minutes
GET TO WORK
Knock the many
commands, ofter forgot
the anything change
Manage machines
with coding
GET OFF WORK Write the job diary
Write the tools
(for get off work early)
12. Ⅱ. What are the benefits of use an automated
configuration management tool ?
12
13. Using Ansible,
We can reduce the
service interruption time,
test the infrastructure,
reduce the risk of accidents
, and seamless integration
the development, testing
and production environment.
source: Ansible as Automation Glue
13
14. HUMAN AUTOMATE
REPEAT COSTS High Low
HUMAN ERROR High Low
TESTABILITY Hard Easy
MODULARIZATION Hard Easy
GET OFF WORK EARLY Hard Easy
What are the benefits of use an automated
configuration management tool ?
14
16. Ansible named from novel
Ender's Game . It is
a fictional superluminal
communication device.
With Ansible, we can control
the servers like Ender
command the warships.
source: https://goo.gl/4xftZT
16
17. Ansible is the rising
popularity of DevOps
automation software
in recent years
Using agentless architecture,
flexible deployment,
easy to read, so become a
popular DevOps tool, quickly.
source: http://goo.gl/yJbWtz
17
18. What is the Ansible ?
• It's Configuration Management Tools (Infrastructure as
Code) like the Puppet, SaltStack, Chef.
• Easy to use.
• Somebody in the DevOps world.
• Using the Push architecture, no need the agent, only
need the Python and SSH.
• Python base !!!
18
19. Ⅳ. How to deploy the Ansible environment ?
19
concept, setup, setting
20. How does the Ansible work ?
Define the Managed node with inventory, communicate with SSH and Python.
20
21. How to setup the Ansible ?
• Only install the Ansible on Control Machine;
the Managed node need the Python 2.5+ and SSH.
21
# Debian & Ubuntu (apt).
$ sudo apt-get install ansible
# RHEL & CentOS (yum).
$ sudo yum install ansible
# Mac OS X (homebrew).
$ brew install ansible
# Python (pip).
$ sudo pip install ansible
22. How to setting the Ansible ?
• Setting the inventory (host file) path, remote username
and ssh key of Managed node with ansible.cfg.
22
$ vim ansible.cfg
[defaults]
# Setting the inventory file path.
hostfile = hosts
# Remote username.
remote_user = docker
#private_key_file = ~/.ssh/id_rsa
# Don’t checking ssh key.
host_key_checking = False
23. What is the inventory ?
• Define the host address, group of Managed node,
it can also setting the ssh connect config.
23
$ vim hosts
# ansible_ssh_host: remote ssh host address.
# ansible_ssh_port: remote ssh port.
# ansible_ssh_user: remote ssh username.
# ansible_ssh_private_key_file: local ssh private key.
# ansible_ssh_pass: remote ssh password (recommend use the private key).
[dev]
ansible-demo ansible_ssh_host=127.0.0.1 ansible_ssh_pass=pwd
[test]
ansible-test ansible_ssh_host=172.10.10.1 ansible_ssh_port=2222
[prod]
ansible-prod ansible_ssh_host=10.10.10.1 ansible_ssh_user=deploy
24. Ⅴ. How to use the Ansible
24
Ad-Hoc command, Playbook* (Module)
26. What is the Ad-Hoc command ?
• Short (temporality) command, like the normal (classic)
command line mode, operate it with one line at a time.
26
# classic command line
$ ping ansible-demo.local
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.037 ms
--- localhost ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.037/0.037/0.037/0.000 ms
$ echo Hello World
Hello World
27. What is the Ad-Hoc command ?
• Use the Module after the -m, please refer the official
documents for detailed usage.
27
# ansible <host-pattern> -m [module_name] [-a args] [options]
$ ansible all -m ping
ansible-demo.local | SUCCESS => {
"changed": false,
"ping": "pong"
}
$ ansible all -m command -a "echo Hello World"
ansible-demo.local | SUCCESS | rc=0 >>
Hello World
28. What is the Playbooks ?
• More structured than the Shell
Script language, it’s good for
large deployment.
• Use the YAML format, the
playbook is like documents,
easy to read.
• There are usually the Play,
Task and Module.
• Use the Jinja2 (template)
expression, it’s support the
variables, conditional judgment,
loop and other syntax.
source: http://goo.gl/GKJvXn
28
29. What is the Playbooks ?
• A Playbook can have multiple Play and multiple Tasks.
• The example uses the Play*1, Task*3 and Module*3 (command, apt, lineinfile).
29
$ vim example.yml
---
- name: This is a Super-basic playbook.
hosts: all
tasks:
- name: Hello World
command: echo "Hello World"
- name: Install Vim & Emacs
become: yes
apt: name={{ item }} state=present
with_items:
- vim
- emacs
# Expelliarmus for Emacs.
- name: use vi-mode in readline
become: yes
lineinfile: dest=/etc/inputrc line="set editing-mode vi"
30. What is the Playbooks ?
• A Playbook can have multiple Play and multiple Tasks.
• The example uses the Play*1, Task*3 and Module*3 (command, apt, lineinfile).
30
$ vim example.yml
---
- name: This is a Super-basic playbook.
hosts: all
tasks:
- name: Hello World
command: echo "Hello World"
- name: Install Vim & Emacs
become: yes
apt: name={{ item }} state=present
with_items:
- vim
- emacs
# Expelliarmus for Emacs.
- name: use vi-mode in readline
become: yes
lineinfile: dest=/etc/inputrc line="set editing-mode vi"
Play
31. What is the Playbooks ?
• A Playbook can have multiple Play and multiple Tasks.
• The example uses the Play*1, Task*3 and Module*3 (command, apt, lineinfile).
31
$ vim example.yml
---
- name: This is a Super-basic playbook.
hosts: all
tasks:
- name: Hello World
command: echo "Hello World"
- name: Install Vim & Emacs
become: yes
apt: name={{ item }} state=present
with_items:
- vim
- emacs
# Expelliarmus for Emacs.
- name: use vi-mode in readline
become: yes
lineinfile: dest=/etc/inputrc line="set editing-mode vi"
Task 1
Task 2
Task 3
32. What is the Playbooks ?
• A Playbook can have multiple Play and multiple Tasks.
• The example uses the Play*1, Task*3 and Module*3 (command, apt, lineinfile).
32
$ vim example.yml
---
- name: This is a Super-basic playbook.
hosts: all
tasks:
- name: Hello World
command: echo "Hello World"
- name: Install Vim & Emacs
become: yes
apt: name={{ item }} state=present
with_items:
- vim
- emacs
# Expelliarmus for Emacs.
- name: use vi-mode in readline
become: yes
lineinfile: dest=/etc/inputrc line="set editing-mode vi"
Module
33. What is the Playbooks ?
• Run the playbook of example.yml.
33
$ ansible-playbook example.yml
PLAY [This is a Super-basic playbook.] *****************************************
TASK [setup] *******************************************************************
ok: [ansible-demo.local]
TASK [Hello World] *************************************************************
changed: [ansible-demo.local]
TASK [Install Vim & Emacs] *****************************************************
changed: [ansible-demo.local] => (item=[u'vim', u'emacs'])
TASK [use vi-mode in readline] *************************************************
changed: [ansible-demo.local]
PLAY RECAP *********************************************************************
ansible-demo.local : ok=4 changed=3 unreachable=0 failed=0
34. What is the Playbooks ?
• Run the playbook of example.yml.
34
$ ansible-playbook example.yml
PLAY [This is a Super-basic playbook.] *****************************************
TASK [setup] *******************************************************************
ok: [ansible-demo.local]
TASK [Hello World] *************************************************************
changed: [ansible-demo.local]
TASK [Install Vim & Emacs] *****************************************************
changed: [ansible-demo.local] => (item=[u'vim', u'emacs'])
TASK [use vi-mode in readline] *************************************************
changed: [ansible-demo.local]
PLAY RECAP *********************************************************************
ansible-demo.local : ok=4 changed=3 unreachable=0 failed=0
Setup
Recap