Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Automate with Ansible basic (2/e, English)

706 views

Published on

Ansible basic training (2/e) of English edition.

* 1st: https://www.slideshare.net/

Published in: Technology

Automate with Ansible basic (2/e, English)

  1. 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. 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
  3. 3. Ready ? Go 3
  4. 4. Outline I. What is the modern IT Engineer ? 4
  5. 5. Outline I. What is the modern IT Engineer ? II. What are the benefits of use an automated configuration management tool ? 5
  6. 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. 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. 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. 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
  10. 10. Ⅰ. What is the modern IT Engineer ? 10 DevOps
  11. 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. 12. Ⅱ. What are the benefits of use an automated configuration management tool ? 12
  13. 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. 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
  15. 15. Ⅲ. What is the Ansible ? 15
  16. 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. 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. 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. 19. Ⅳ. How to deploy the Ansible environment ? 19 concept, setup, setting
  20. 20. How does the Ansible work ? Define the Managed node with inventory, communicate with SSH and Python. 20
  21. 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. 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. 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. 24. Ⅴ. How to use the Ansible 24 Ad-Hoc command, Playbook* (Module)
  25. 25. Ad-Hoc command and 25 Playbook
  26. 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. 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. 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. 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. 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. 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. 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. 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. 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
  35. 35. Module 35
  36. 36. http://docs.ansible.com/ansible/list_of_commands_modules.html
  37. 37. Docs » commands Modules yes = requirement to use
  38. 38. Play Lab 39
  39. 39. Going to https://goo.gl/EYJ40O (for get the lab of Control Machine*1 and Managed node*2). Control the Managed node with Ansible 40
  40. 40. Try the Ansible on Jupyter notebook by myself.
  41. 41. Q & A Pleast do not pat and feed ! 42
  42. 42. E N D

×