SlideShare a Scribd company logo
1 of 31
Download to read offline
今日から始める Ansible
~ Ansible 101 ~
Hideki Saito
Software Maintenance Engineer/Red Hat K.K.
INSERT DESIGNATOR, IF NEEDED2
Who am I
• さいとう ひでき <@saito_hideki>
• レッドハット株式会社
• ソフトウェアメンテナンスエンジニア
• Ansible Tower サポートチーム
• Ansible ユーザグループ管理人
INSERT DESIGNATOR, IF NEEDED3
Agenda
• IT Automation
• Ansible Core introduction
• DEMO'S
• Let's play with Ansible
• Getting Started
• Ad-Hoc command
• Playbook
INSERT DESIGNATOR, IF NEEDED4
Motivation and Proposition
Automate routine work to operate IT system.
• Let's start with where we can automate easily.
• Let's start automation using script language that
anyone can easily understand.
●
Education and training for programming take a lot of time.
●
The IT system includes various kinds of hardware / software.
INSERT DESIGNATOR, IF NEEDED5
AUTOMATION FOR EVERYONE
• Ansible is an IT automation tool
• Goals are simplicity and ease-of-use
• Managing target via SSH transportation
• Management steps is written by YAML
• New release is provided approximately
every 2 months (Current 2.3.2)
• https://github.com/ansible/ansible
INSERT DESIGNATOR, IF NEEDED6
Introduce following components of
Ansible Core:
Ansible Core
Ansible Core is command-line IT automation Tool and libraries
1. Command Line Tools
2. Playbooks
3. Inventory
4. Modules
5. Plugins
INSERT DESIGNATOR, IF NEEDED7
COMMAND LINE TOOLS
Ansible Core contains some command line tools. Following 2 commands are
able to control your target hosts.
[Usage] ansible %Target% -i %Inventory% -m %Module%
$ ansible www -i inventory -m ping
[Usage] ansible %Target% -i %Inventory% -a %Ad-Hoc Command%
$ ansible www -i inventory -a “/sbin/reboot”
[Usage] ansible %Target% -i %Inventory% -m %Module%
$ ansible www -i inventory -m ping
[Usage] ansible %Target% -i %Inventory% -a %Ad-Hoc Command%
$ ansible www -i inventory -a “/sbin/reboot”
[Usage] ansible-playbook -i %Inventory% %Playbook%
$ ansible-playbook -i inventory playbook.yml
[Usage] ansible-playbook -i %Inventory% %Playbook%
$ ansible-playbook -i inventory playbook.yml
1. ansible command
2. ansible-playbook command
INSERT DESIGNATOR, IF NEEDED8
COMMAND MECHANISM
Target Hostmodule
Inventory
Executable
Python Code
Executable
Python Code
Executable
Python Code
ansible
(1)
(2)
(3)
(4)
(5)
(1) Lookup Target Host
(2) Read Module
(3) Generate executable code from Module
(4) Copy Executable python code to via SCP
(5) Execute python code on Target Host
INSERT DESIGNATOR, IF NEEDED9
PLAYBOOKS
Playbooks are Ansible’s configuration, deployment, and orchestration
language. You can write Playbooks easily by YAML.
01: ---
02: - hosts: www
03: vars:
04: new_name: ansible-host1
05: tasks:
06: - name: get hostname
07: shell: hostname
08: register: result
09: - name: set hostname
10: hostname:
11: name: "{{ new_name }}"
12: notify: show hostname
13: handlers:
14: - name: show hostname
15: debug:
16: msg: "before={{ result.stdout }} after={{ new_name }}"
INSERT DESIGNATOR, IF NEEDED10
INVENTORY (STATIC)
Ansible is able to working against multiple system at the same time.
You can select portions of systems listed in the inventory at running time.
01: [localhost]
02: 127.0.0.1
03:
04: [staging]
05: 192.168.0.1
06: 192.168.0.2
07:
08: [production]
09: www1.example.com
10: www2.example.com
11:
12: [vars:local]
13: ansible_connection=local
01: [localhost]
02: 127.0.0.1
03:
04: [staging]
05: 192.168.0.1
06: 192.168.0.2
07:
08: [production]
09: www1.example.com
10: www2.example.com
11:
12: [vars:local]
13: ansible_connection=local
INSERT DESIGNATOR, IF NEEDED11
INVENTORY (DYNAMIC)
Ansible easily supports all of these options via an external inventory system.
For example: OpenStack, AWS, GCE or something like that.
You can look these dynamic inventories at https://goo.gl/knXn3c
ansible
Executable
Inventory Code
JSON formatted
Inventory Info
via STDOUT
IaaS
(1)
(2)
(3)
(4)
(1) Execute Dynamic Inventory
(2) Collect Target information
(3) Output Inventory to STDOUT
(4) Read Inventory Information
INSERT DESIGNATOR, IF NEEDED12
MODULES (1)
Ansible has a lot of modules that can be executed directly on remote hosts
or through Playbooks. You can see module index at https://goo.gl/yCGC4U
Group Target
Cloud
AWS, GCE, Azure,
OpenStack etc...
Clustering
Commands
Crypto
Database
Group Target
Cloud
AWS, GCE, Azure,
OpenStack etc...
Clustering K8S, Pacemaker etc...
Commands
command, shell,
expect etc...
Crypto openssl
Database
MySQL, PostgreSQL,
MSSQL etc ...
Group Target
Cloud
AWS, GCE, Azure,
OpenStack etc...
Clustering
Commands
Crypto
Database
Group Target
File
file, template, stat,
unarchive etc...
Identity FreeIPA, OpenDJ
Inventory
Add group and host to
inventory
Messaging RabbitMQ
Monitoring
datadog, logstash,
nagios etc...
INSERT DESIGNATOR, IF NEEDED13
MODULES (2)
Group Target
Net Tools
haproxy, nmcli, ldap,
get_url etc...
Network
Bigswitch, Cumulus,
Eos, IOS. Junos etc ...
Notification hipcat, irc, slack etc...
Packaging
rpm, yum, npm, apt
etc...
Remote management HP iLO, IPMI etc...
Source control
git, github, gitlab, hg,
subversion etc ...
Group Target
Storage NetApp, zfs etc...
System
user, group, service,
puppet :) etc...
Utilities Helper, Logic
Web infrastructure
apache, nginx, tower
etc...
Windows IIS, acl, package etc...
INSERT DESIGNATOR, IF NEEDED14
PLUGINS
Plugins are pieces of code that augment Ansible’s core functionality.
You can easily write your own. Please see: https://goo.gl/ZQ9hvb
For example: connection plugin
~ https://goo.gl/rLha4L ~
INSERT DESIGNATOR, IF NEEDED15
DEMO’S
• Let’s play with Ansible Core
• Getting Started
• Ad-Hoc command
• Playbook
INSERT DESIGNATOR, IF NEEDED16
Getting started (1)
You can install Ansible Core easily.
$ sudo yum install epel-release
$ git clone https://github.com/ansible/ansible.git
$ cd ansible
$ git checkout -b v2.3.1.0-1 v2.3.1.0-1
$ make rpm
$ sudo yum install rpm-build/ansible-2.3.1.0-100.XXX.el7.centos.noarch.rpm
$ ansible --version
ansible 2.3.1.0
$ sudo yum install epel-release
$ git clone https://github.com/ansible/ansible.git
$ cd ansible
$ git checkout -b v2.3.1.0-1 v2.3.1.0-1
$ make rpm
$ sudo yum install rpm-build/ansible-2.3.1.0-100.XXX.el7.centos.noarch.rpm
$ ansible --version
ansible 2.3.1.0
Checkout source code from github and make RPM!:
INSERT DESIGNATOR, IF NEEDED17
Getting started (2)
Writing inventory file.
01: [linux]
02: 192.168.100.100 ansible_user=ec2-user
03: 192.168.100.101 ansible_user=ec2-user
04: 192.168.100.102 ansible_user=ec2-user
05:
06: [win]
07: WIN-PC1.example.com
08: WIN-PC2.example.com
09: WIN-PC3.example.com
10:
11: [win:vars]
12: ansible_port=5986
13: ansible_connection=winrm
14: ansible_winrm_server_cert_validation=ignore
15: ansible_winrm_transport=kerberos
16: ansible_winrm_kerberos_delegation=true
01: [linux]
02: 192.168.100.100 ansible_user=ec2-user
03: 192.168.100.101 ansible_user=ec2-user
04: 192.168.100.102 ansible_user=ec2-user
05:
06: [win]
07: WIN-PC1.example.com
08: WIN-PC2.example.com
09: WIN-PC3.example.com
10:
11: [win:vars]
12: ansible_port=5986
13: ansible_connection=winrm
14: ansible_winrm_server_cert_validation=ignore
15: ansible_winrm_transport=kerberos
16: ansible_winrm_kerberos_delegation=true
INSERT DESIGNATOR, IF NEEDED18
Getting started (3)
Using dynamic inventory program.
$ ./ec2.py –-list
$ ./ec2.py --host 192.168.100.100
$ ansible <target> -i ec2.py -m ping
$ ./ec2.py –-list
$ ./ec2.py --host 192.168.100.100
$ ansible <target> -i ec2.py -m ping
INSERT DESIGNATOR, IF NEEDED19
Testing connectivity by Ansible
Ansible manages Linux/Unix machines using SSH by default.
For the Windows, “winrm” Python module to talk to remote hosts.
# Check host list
$ ansible linux -i hosts –list-hosts
$ ansible win -i hosts –list-hosts
# Check connectivity
$ ansible linux -i hosts -m ping
$ ansible win -i hosts -m win_ping
# Check host list
$ ansible linux -i hosts –list-hosts
$ ansible win -i hosts –list-hosts
# Check connectivity
$ ansible linux -i hosts -m ping
$ ansible win -i hosts -m win_ping
You can use ping and win_ping module for testing connectiviry.
INSERT DESIGNATOR, IF NEEDED20
Ad-Hoc command
Ansible Core supports execute command like parallel ssh.
$ ansible linux -i hosts -a "uname -a"
SSH password:
10.0.0.14 | SUCCESS | rc=0 >>
Linux target00 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014
x86_64 x86_64 x86_64 GNU/Linux
10.0.0.15 | SUCCESS | rc=0 >>
Linux target01 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014
x86_64 x86_64 x86_64 GNU/Linux
$ ansible linux -i hosts -a "uname -a"
SSH password:
10.0.0.14 | SUCCESS | rc=0 >>
Linux target00 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014
x86_64 x86_64 x86_64 GNU/Linux
10.0.0.15 | SUCCESS | rc=0 >>
Linux target01 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014
x86_64 x86_64 x86_64 GNU/Linux
Execute command on target nodes via ssh:
INSERT DESIGNATOR, IF NEEDED21
Playbook (1)
Describe workflow in YAML format
$ ansible-playbook -i hosts playbook.yml
$ ansible-playbook -i hosts -u <USER> -k -K playbook.yml
$ ansible-playbook -i hosts playbook.yml
$ ansible-playbook -i hosts -u <USER> -k -K playbook.yml
Playbook can execute by ansible-playbook command:
INSERT DESIGNATOR, IF NEEDED22
Playbook (2)
For example: Install packages by playbook
01: ---
02: - hosts: linux
03:
04: vars:
05: packages:
06: - net-tools
07: - mlocate
08: - wget
09:
10: tasks:
11: - name: install packages
12: yum:
13: name: "{{ item }}"
14: state: present
15: update_cache: yes
16: with_items: "{{ packages }}"
17: become: true
01: ---
02: - hosts: linux
03:
04: vars:
05: packages:
06: - net-tools
07: - mlocate
08: - wget
09:
10: tasks:
11: - name: install packages
12: yum:
13: name: "{{ item }}"
14: state: present
15: update_cache: yes
16: with_items: "{{ packages }}"
17: become: true
INSERT DESIGNATOR, IF NEEDED23
Playbook (3)
An operation is idempotent if the result of performing it once is exactly the
same as the result of performing it repeatedly without any intervening
actions.
# Try to launch playbook - 1st time (state: changed)
$ ansible-playbook -i hosts install_packages.yml
…
TASK [install packages]
**********************************************************************
changed: [172.31.3.136] => (item=[u'net-tools', u'mlocate', u'wget'])
...
# Try to launch playbook - 2nd time (state: ok)
$ ansible-playbook -i hosts install_packages.yml
…
TASK [install packages]
**********************************************************************
ok: [172.31.5.233] => (item=[u'net-tools', u'mlocate', u'wget'])
# Try to launch playbook - 1st time (state: changed)
$ ansible-playbook -i hosts install_packages.yml
…
TASK [install packages]
**********************************************************************
changed: [172.31.3.136] => (item=[u'net-tools', u'mlocate', u'wget'])
...
# Try to launch playbook - 2nd time (state: ok)
$ ansible-playbook -i hosts install_packages.yml
…
TASK [install packages]
**********************************************************************
ok: [172.31.5.233] => (item=[u'net-tools', u'mlocate', u'wget'])
INSERT DESIGNATOR, IF NEEDED24
Playbook (4)
Copy file to target host using by template module
01: ---
02: - hosts: linux
03:
04: vars:
05: target: /tmp/hello.txt
06: who: Hideki
07:
08: tasks:
09: - name: remote "{{ target }}"
10: file: path="{{ target }}" state=absent
11: - name: copy file using by template
12: template: src=hello.txt.j2 dest="{{ target }}"
13: - name: cat "{{ target }}"
14: shell: cat "{{ target }}"
15: register: result
16: - debug: var=result verbosity=1
01: ---
02: - hosts: linux
03:
04: vars:
05: target: /tmp/hello.txt
06: who: Hideki
07:
08: tasks:
09: - name: remote "{{ target }}"
10: file: path="{{ target }}" state=absent
11: - name: copy file using by template
12: template: src=hello.txt.j2 dest="{{ target }}"
13: - name: cat "{{ target }}"
14: shell: cat "{{ target }}"
15: register: result
16: - debug: var=result verbosity=1
INSERT DESIGNATOR, IF NEEDED25
Playbook (5)
Copy file to target host using by template module.
You can replace keywords in the file by jinja2 format values.
01: # Test for template module
02:
03: Hello, {{ who }}
04:
05: # EOF
01: # Test for template module
02:
03: Hello, {{ who }}
04:
05: # EOF
INSERT DESIGNATOR, IF NEEDED26
Playbook (6)
Windows Support
1. Install krb packages and related python modules
2. Configure /etc/krb5.conf
3. kinit user@DOMAIN
- http://docs.ansible.com/ansible/latest/intro_windows.html
$ yum -y install python-devel krb5-devel krb5-libs krb5-workstation
$ pip install ntlm-auth==1.0.2
$ pip install pywinrm[kerberos]
$ pip install requests-kerberos
$ pip install pykerberos
$ sudo vi /etc/krb5.conf
$ kinit Administrator@EXAMPLE.COM
$ yum -y install python-devel krb5-devel krb5-libs krb5-workstation
$ pip install ntlm-auth==1.0.2
$ pip install pywinrm[kerberos]
$ pip install requests-kerberos
$ pip install pykerberos
$ sudo vi /etc/krb5.conf
$ kinit Administrator@EXAMPLE.COM
INSERT DESIGNATOR, IF NEEDED27
Playbook (7)
Windows Support
01: ---
02: - hosts: win
03:
04: tasks:
05: - name: ipconfig /all
06: win_command: ipconfig /all
07: register: result
08:
09: - debug:
10: var: result
11: verbosity: 1
01: ---
02: - hosts: win
03:
04: tasks:
05: - name: ipconfig /all
06: win_command: ipconfig /all
07: register: result
08:
09: - debug:
10: var: result
11: verbosity: 1
INSERT DESIGNATOR, IF NEEDED28
Playbook (8)
Windows Support
01: ---
02: - hosts: win2012
03:
04: vars:
05: updates:
06: - CriticalUpdates
07: - SecurityUpdates
08:
09: tasks:
10: - name: check windows update
11: win_updates:
12: category_names: "{{ item }}"
13: state: searched
14: register: result
15: with_items: "{{ updates }}"
16:
17: - debug:
18: var: result
19: verbosity: 1
01: ---
02: - hosts: win2012
03:
04: vars:
05: updates:
06: - CriticalUpdates
07: - SecurityUpdates
08:
09: tasks:
10: - name: check windows update
11: win_updates:
12: category_names: "{{ item }}"
13: state: searched
14: register: result
15: with_items: "{{ updates }}"
16:
17: - debug:
18: var: result
19: verbosity: 1
INSERT DESIGNATOR, IF NEEDED29
Modules document
You will see the documentation for modules by ansible-doc command
$ ansible-doc --help
Usage: ansible-doc [options] [module...]
Options:
-a, --all Show documentation for all modules
-h, --help show this help message and exit
-l, --list List available modules
-M MODULE_PATH, --module-path=MODULE_PATH
specify path(s) to module library (default=None)
-s, --snippet Show playbook snippet for specified module(s)
-v, --verbose verbose mode (-vvv for more, -vvvv to enable
connection debugging)
--version show program's version number and exit
$ ansible-doc --help
Usage: ansible-doc [options] [module...]
Options:
-a, --all Show documentation for all modules
-h, --help show this help message and exit
-l, --list List available modules
-M MODULE_PATH, --module-path=MODULE_PATH
specify path(s) to module library (default=None)
-s, --snippet Show playbook snippet for specified module(s)
-v, --verbose verbose mode (-vvv for more, -vvvv to enable
connection debugging)
--version show program's version number and exit
INSERT DESIGNATOR, IF NEEDED38
If you want to proceed to the next step,
I believe Ansible Core and Tower will help you.
THANK YOU
plus.google.com/+RedHat
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHatNews

More Related Content

What's hot

Ansible basics workshop
Ansible basics workshopAnsible basics workshop
Ansible basics workshopDavid Karban
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to AnsibleCoreStack
 
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...Simplilearn
 
Ansible is the simplest way to automate. MoldCamp, 2015
Ansible is the simplest way to automate. MoldCamp, 2015Ansible is the simplest way to automate. MoldCamp, 2015
Ansible is the simplest way to automate. MoldCamp, 2015Alex S
 
Automating CloudStack with Puppet - David Nalley
Automating CloudStack with Puppet - David NalleyAutomating CloudStack with Puppet - David Nalley
Automating CloudStack with Puppet - David NalleyPuppet
 
Docker ansible-make-chef-puppet-unnecessary-minnihan
Docker ansible-make-chef-puppet-unnecessary-minnihanDocker ansible-make-chef-puppet-unnecessary-minnihan
Docker ansible-make-chef-puppet-unnecessary-minnihanjbminn
 
Infrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStackInfrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStackke4qqq
 
Puppet and CloudStack
Puppet and CloudStackPuppet and CloudStack
Puppet and CloudStackke4qqq
 
Baking in the cloud with packer and puppet
Baking in the cloud with packer and puppetBaking in the cloud with packer and puppet
Baking in the cloud with packer and puppetAlan Parkinson
 
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'rmcleay
 
A Introduction of Packer
A Introduction of PackerA Introduction of Packer
A Introduction of PackerFreyr Lin
 
DevOps for Humans - Ansible for Drupal Deployment Victory!
DevOps for Humans - Ansible for Drupal Deployment Victory!DevOps for Humans - Ansible for Drupal Deployment Victory!
DevOps for Humans - Ansible for Drupal Deployment Victory!Jeff Geerling
 
Integrating cloud stack with puppet
Integrating cloud stack with puppetIntegrating cloud stack with puppet
Integrating cloud stack with puppetPuppet
 
Ansible Tutorial For Beginners | What Is Ansible And How It Works? | Ansible ...
Ansible Tutorial For Beginners | What Is Ansible And How It Works? | Ansible ...Ansible Tutorial For Beginners | What Is Ansible And How It Works? | Ansible ...
Ansible Tutorial For Beginners | What Is Ansible And How It Works? | Ansible ...Simplilearn
 
Packer, where DevOps begins
Packer, where DevOps beginsPacker, where DevOps begins
Packer, where DevOps beginsJeff Hung
 
Go Faster with Ansible (AWS meetup)
Go Faster with Ansible (AWS meetup)Go Faster with Ansible (AWS meetup)
Go Faster with Ansible (AWS meetup)Richard Donkin
 
Ansible module development 101
Ansible module development 101Ansible module development 101
Ansible module development 101yfauser
 
Using Ansible for Deploying to Cloud Environments
Using Ansible for Deploying to Cloud EnvironmentsUsing Ansible for Deploying to Cloud Environments
Using Ansible for Deploying to Cloud Environmentsahamilton55
 

What's hot (20)

Ansible basics workshop
Ansible basics workshopAnsible basics workshop
Ansible basics workshop
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
 
Ansible is the simplest way to automate. MoldCamp, 2015
Ansible is the simplest way to automate. MoldCamp, 2015Ansible is the simplest way to automate. MoldCamp, 2015
Ansible is the simplest way to automate. MoldCamp, 2015
 
Automating CloudStack with Puppet - David Nalley
Automating CloudStack with Puppet - David NalleyAutomating CloudStack with Puppet - David Nalley
Automating CloudStack with Puppet - David Nalley
 
Docker ansible-make-chef-puppet-unnecessary-minnihan
Docker ansible-make-chef-puppet-unnecessary-minnihanDocker ansible-make-chef-puppet-unnecessary-minnihan
Docker ansible-make-chef-puppet-unnecessary-minnihan
 
Infrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStackInfrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStack
 
Puppet and CloudStack
Puppet and CloudStackPuppet and CloudStack
Puppet and CloudStack
 
Baking in the cloud with packer and puppet
Baking in the cloud with packer and puppetBaking in the cloud with packer and puppet
Baking in the cloud with packer and puppet
 
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'
DevOps in a Regulated World - aka 'Ansible, AWS, and Jenkins'
 
A Introduction of Packer
A Introduction of PackerA Introduction of Packer
A Introduction of Packer
 
DevOps for Humans - Ansible for Drupal Deployment Victory!
DevOps for Humans - Ansible for Drupal Deployment Victory!DevOps for Humans - Ansible for Drupal Deployment Victory!
DevOps for Humans - Ansible for Drupal Deployment Victory!
 
Ansible Case Studies
Ansible Case StudiesAnsible Case Studies
Ansible Case Studies
 
Hands on ansible
Hands on ansibleHands on ansible
Hands on ansible
 
Integrating cloud stack with puppet
Integrating cloud stack with puppetIntegrating cloud stack with puppet
Integrating cloud stack with puppet
 
Ansible Tutorial For Beginners | What Is Ansible And How It Works? | Ansible ...
Ansible Tutorial For Beginners | What Is Ansible And How It Works? | Ansible ...Ansible Tutorial For Beginners | What Is Ansible And How It Works? | Ansible ...
Ansible Tutorial For Beginners | What Is Ansible And How It Works? | Ansible ...
 
Packer, where DevOps begins
Packer, where DevOps beginsPacker, where DevOps begins
Packer, where DevOps begins
 
Go Faster with Ansible (AWS meetup)
Go Faster with Ansible (AWS meetup)Go Faster with Ansible (AWS meetup)
Go Faster with Ansible (AWS meetup)
 
Ansible module development 101
Ansible module development 101Ansible module development 101
Ansible module development 101
 
Using Ansible for Deploying to Cloud Environments
Using Ansible for Deploying to Cloud EnvironmentsUsing Ansible for Deploying to Cloud Environments
Using Ansible for Deploying to Cloud Environments
 

Viewers also liked

(2017.8.27) Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見
(2017.8.27) Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見(2017.8.27) Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見
(2017.8.27) Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見Mitsutoshi Kiuchi
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてTomofumi Hayashi
 
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来Takuma Nakajima
 
標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのかabend_cve_9999_0001
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説貴仁 大和屋
 
Light and shadow of microservices
Light and shadow of microservicesLight and shadow of microservices
Light and shadow of microservicesNobuhiro Sue
 
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~Masataka Tsukamoto
 
情シスのひみつ
情シスのひみつ情シスのひみつ
情シスのひみつcloretsblack
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考えるEtsuji Nakai
 
Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題
Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題
Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題Yasushi Hara
 
強化学習による 「Montezuma's Revenge」への挑戦
強化学習による 「Montezuma's Revenge」への挑戦強化学習による 「Montezuma's Revenge」への挑戦
強化学習による 「Montezuma's Revenge」への挑戦孝好 飯塚
 
Internetトラフィックエンジニアリングの現実
Internetトラフィックエンジニアリングの現実Internetトラフィックエンジニアリングの現実
Internetトラフィックエンジニアリングの現実J-Stream Inc.
 

Viewers also liked (13)

(2017.8.27) Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見
(2017.8.27) Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見(2017.8.27) Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見
(2017.8.27) Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用について
 
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来
 
標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 
Light and shadow of microservices
Light and shadow of microservicesLight and shadow of microservices
Light and shadow of microservices
 
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~
 
情シスのひみつ
情シスのひみつ情シスのひみつ
情シスのひみつ
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題
Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題
Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題
 
強化学習による 「Montezuma's Revenge」への挑戦
強化学習による 「Montezuma's Revenge」への挑戦強化学習による 「Montezuma's Revenge」への挑戦
強化学習による 「Montezuma's Revenge」への挑戦
 
170827 jtf garafana
170827 jtf garafana170827 jtf garafana
170827 jtf garafana
 
Internetトラフィックエンジニアリングの現実
Internetトラフィックエンジニアリングの現実Internetトラフィックエンジニアリングの現実
Internetトラフィックエンジニアリングの現実
 

Similar to Ansible101

Ansible nice-pdf-copy-for-pres
Ansible nice-pdf-copy-for-presAnsible nice-pdf-copy-for-pres
Ansible nice-pdf-copy-for-presManmohan Singh
 
Ansible Tutorial.pdf
Ansible Tutorial.pdfAnsible Tutorial.pdf
Ansible Tutorial.pdfNigussMehari4
 
Ansible a tool for dev ops
Ansible a tool for dev opsAnsible a tool for dev ops
Ansible a tool for dev opsRené Ribaud
 
Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015Alex S
 
Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Mohamad Hassan
 
RTP NPUG: Ansible Intro and Integration with ACI
RTP NPUG: Ansible Intro and Integration with ACIRTP NPUG: Ansible Intro and Integration with ACI
RTP NPUG: Ansible Intro and Integration with ACIJoel W. King
 
Ansible & Salt - Vincent Boon
Ansible & Salt - Vincent BoonAnsible & Salt - Vincent Boon
Ansible & Salt - Vincent BoonMyNOG
 
Building an HPC Cluster in 10 Minutes
Building an HPC Cluster in 10 MinutesBuilding an HPC Cluster in 10 Minutes
Building an HPC Cluster in 10 MinutesMonica Rut Avellino
 
TIAD - DYI: A simple orchestrator built step by step
TIAD - DYI: A simple orchestrator built step by stepTIAD - DYI: A simple orchestrator built step by step
TIAD - DYI: A simple orchestrator built step by stepThe Incredible Automation Day
 
How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2Fernando Lopez Aguilar
 
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE Lab
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE LabHow to Deploy Spark Instance Using Ansible 2.0 in FIWARE Lab
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE LabFIWARE
 
CloudOpen 2014 - Extending Cloud Automation, When OpenStack Meets Ansible
CloudOpen 2014 - Extending Cloud Automation, When OpenStack Meets AnsibleCloudOpen 2014 - Extending Cloud Automation, When OpenStack Meets Ansible
CloudOpen 2014 - Extending Cloud Automation, When OpenStack Meets AnsibleBenjamin Zores
 
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Idan Tohami
 
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Idan Tohami
 
Ansible on aws - Pop-up Loft Tel Aviv
Ansible on aws - Pop-up Loft Tel AvivAnsible on aws - Pop-up Loft Tel Aviv
Ansible on aws - Pop-up Loft Tel AvivAmazon Web Services
 
Webinar: Automate IBM Connections Installations and more
Webinar: Automate IBM Connections Installations and moreWebinar: Automate IBM Connections Installations and more
Webinar: Automate IBM Connections Installations and morepanagenda
 

Similar to Ansible101 (20)

Ansible nice-pdf-copy-for-pres
Ansible nice-pdf-copy-for-presAnsible nice-pdf-copy-for-pres
Ansible nice-pdf-copy-for-pres
 
Ansible Tutorial.pdf
Ansible Tutorial.pdfAnsible Tutorial.pdf
Ansible Tutorial.pdf
 
Ansible - Hands on Training
Ansible - Hands on TrainingAnsible - Hands on Training
Ansible - Hands on Training
 
LSA2 - 02 Namespaces
LSA2 - 02  NamespacesLSA2 - 02  Namespaces
LSA2 - 02 Namespaces
 
Ansible a tool for dev ops
Ansible a tool for dev opsAnsible a tool for dev ops
Ansible a tool for dev ops
 
Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015
 
Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017
 
RTP NPUG: Ansible Intro and Integration with ACI
RTP NPUG: Ansible Intro and Integration with ACIRTP NPUG: Ansible Intro and Integration with ACI
RTP NPUG: Ansible Intro and Integration with ACI
 
Ansible & Salt - Vincent Boon
Ansible & Salt - Vincent BoonAnsible & Salt - Vincent Boon
Ansible & Salt - Vincent Boon
 
Building an HPC Cluster in 10 Minutes
Building an HPC Cluster in 10 MinutesBuilding an HPC Cluster in 10 Minutes
Building an HPC Cluster in 10 Minutes
 
TIAD - DYI: A simple orchestrator built step by step
TIAD - DYI: A simple orchestrator built step by stepTIAD - DYI: A simple orchestrator built step by step
TIAD - DYI: A simple orchestrator built step by step
 
How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2
 
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE Lab
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE LabHow to Deploy Spark Instance Using Ansible 2.0 in FIWARE Lab
How to Deploy Spark Instance Using Ansible 2.0 in FIWARE Lab
 
DevOps for database
DevOps for databaseDevOps for database
DevOps for database
 
CloudOpen 2014 - Extending Cloud Automation, When OpenStack Meets Ansible
CloudOpen 2014 - Extending Cloud Automation, When OpenStack Meets AnsibleCloudOpen 2014 - Extending Cloud Automation, When OpenStack Meets Ansible
CloudOpen 2014 - Extending Cloud Automation, When OpenStack Meets Ansible
 
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
 
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
 
Ansible on aws - Pop-up Loft Tel Aviv
Ansible on aws - Pop-up Loft Tel AvivAnsible on aws - Pop-up Loft Tel Aviv
Ansible on aws - Pop-up Loft Tel Aviv
 
One-Man Ops
One-Man OpsOne-Man Ops
One-Man Ops
 
Webinar: Automate IBM Connections Installations and more
Webinar: Automate IBM Connections Installations and moreWebinar: Automate IBM Connections Installations and more
Webinar: Automate IBM Connections Installations and more
 

More from Hideki Saito

これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024Hideki Saito
 
Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021Hideki Saito
 
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Hideki Saito
 
Ansible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめAnsible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめHideki Saito
 
Getting Started - Ansible Galaxy NG
Getting Started - Ansible Galaxy NGGetting Started - Ansible Galaxy NG
Getting Started - Ansible Galaxy NGHideki Saito
 
Ansible troubleshooting 101_202007
Ansible troubleshooting 101_202007Ansible troubleshooting 101_202007
Ansible troubleshooting 101_202007Hideki Saito
 
How to contribute code to ansible awx
How to contribute code to ansible awxHow to contribute code to ansible awx
How to contribute code to ansible awxHideki Saito
 
Update: Ansible Tower 3.6.0
Update: Ansible Tower 3.6.0Update: Ansible Tower 3.6.0
Update: Ansible Tower 3.6.0Hideki Saito
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with AnsibleHideki Saito
 
How to contribute AWX
How to contribute AWXHow to contribute AWX
How to contribute AWXHideki Saito
 
Ansible Tower on OpenShift
Ansible Tower on OpenShiftAnsible Tower on OpenShift
Ansible Tower on OpenShiftHideki Saito
 
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXIT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXHideki Saito
 
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXIT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXHideki Saito
 
Ansible handson ood2016
Ansible handson ood2016Ansible handson ood2016
Ansible handson ood2016Hideki Saito
 
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化Hideki Saito
 
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編Hideki Saito
 
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Hideki Saito
 

More from Hideki Saito (20)

これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024
 
Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021
 
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
 
Ansible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめAnsible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめ
 
Getting Started - Ansible Galaxy NG
Getting Started - Ansible Galaxy NGGetting Started - Ansible Galaxy NG
Getting Started - Ansible Galaxy NG
 
Ansible troubleshooting 101_202007
Ansible troubleshooting 101_202007Ansible troubleshooting 101_202007
Ansible troubleshooting 101_202007
 
How to contribute code to ansible awx
How to contribute code to ansible awxHow to contribute code to ansible awx
How to contribute code to ansible awx
 
Update: Ansible Tower 3.6.0
Update: Ansible Tower 3.6.0Update: Ansible Tower 3.6.0
Update: Ansible Tower 3.6.0
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with Ansible
 
How to contribute AWX
How to contribute AWXHow to contribute AWX
How to contribute AWX
 
Ansible Tower on OpenShift
Ansible Tower on OpenShiftAnsible Tower on OpenShift
Ansible Tower on OpenShift
 
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXIT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWX
 
IT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWXIT Automation with OpenStack and Ansible/AWX
IT Automation with OpenStack and Ansible/AWX
 
Ansible with AWX
Ansible with AWXAnsible with AWX
Ansible with AWX
 
Ansible handson ood2016
Ansible handson ood2016Ansible handson ood2016
Ansible handson ood2016
 
Ansible handson
Ansible handsonAnsible handson
Ansible handson
 
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
 
OpenStack Now!
OpenStack Now!OpenStack Now!
OpenStack Now!
 
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
 
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
 

Recently uploaded

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

Ansible101

  • 1. 今日から始める Ansible ~ Ansible 101 ~ Hideki Saito Software Maintenance Engineer/Red Hat K.K.
  • 2. INSERT DESIGNATOR, IF NEEDED2 Who am I • さいとう ひでき <@saito_hideki> • レッドハット株式会社 • ソフトウェアメンテナンスエンジニア • Ansible Tower サポートチーム • Ansible ユーザグループ管理人
  • 3. INSERT DESIGNATOR, IF NEEDED3 Agenda • IT Automation • Ansible Core introduction • DEMO'S • Let's play with Ansible • Getting Started • Ad-Hoc command • Playbook
  • 4. INSERT DESIGNATOR, IF NEEDED4 Motivation and Proposition Automate routine work to operate IT system. • Let's start with where we can automate easily. • Let's start automation using script language that anyone can easily understand. ● Education and training for programming take a lot of time. ● The IT system includes various kinds of hardware / software.
  • 5. INSERT DESIGNATOR, IF NEEDED5 AUTOMATION FOR EVERYONE • Ansible is an IT automation tool • Goals are simplicity and ease-of-use • Managing target via SSH transportation • Management steps is written by YAML • New release is provided approximately every 2 months (Current 2.3.2) • https://github.com/ansible/ansible
  • 6. INSERT DESIGNATOR, IF NEEDED6 Introduce following components of Ansible Core: Ansible Core Ansible Core is command-line IT automation Tool and libraries 1. Command Line Tools 2. Playbooks 3. Inventory 4. Modules 5. Plugins
  • 7. INSERT DESIGNATOR, IF NEEDED7 COMMAND LINE TOOLS Ansible Core contains some command line tools. Following 2 commands are able to control your target hosts. [Usage] ansible %Target% -i %Inventory% -m %Module% $ ansible www -i inventory -m ping [Usage] ansible %Target% -i %Inventory% -a %Ad-Hoc Command% $ ansible www -i inventory -a “/sbin/reboot” [Usage] ansible %Target% -i %Inventory% -m %Module% $ ansible www -i inventory -m ping [Usage] ansible %Target% -i %Inventory% -a %Ad-Hoc Command% $ ansible www -i inventory -a “/sbin/reboot” [Usage] ansible-playbook -i %Inventory% %Playbook% $ ansible-playbook -i inventory playbook.yml [Usage] ansible-playbook -i %Inventory% %Playbook% $ ansible-playbook -i inventory playbook.yml 1. ansible command 2. ansible-playbook command
  • 8. INSERT DESIGNATOR, IF NEEDED8 COMMAND MECHANISM Target Hostmodule Inventory Executable Python Code Executable Python Code Executable Python Code ansible (1) (2) (3) (4) (5) (1) Lookup Target Host (2) Read Module (3) Generate executable code from Module (4) Copy Executable python code to via SCP (5) Execute python code on Target Host
  • 9. INSERT DESIGNATOR, IF NEEDED9 PLAYBOOKS Playbooks are Ansible’s configuration, deployment, and orchestration language. You can write Playbooks easily by YAML. 01: --- 02: - hosts: www 03: vars: 04: new_name: ansible-host1 05: tasks: 06: - name: get hostname 07: shell: hostname 08: register: result 09: - name: set hostname 10: hostname: 11: name: "{{ new_name }}" 12: notify: show hostname 13: handlers: 14: - name: show hostname 15: debug: 16: msg: "before={{ result.stdout }} after={{ new_name }}"
  • 10. INSERT DESIGNATOR, IF NEEDED10 INVENTORY (STATIC) Ansible is able to working against multiple system at the same time. You can select portions of systems listed in the inventory at running time. 01: [localhost] 02: 127.0.0.1 03: 04: [staging] 05: 192.168.0.1 06: 192.168.0.2 07: 08: [production] 09: www1.example.com 10: www2.example.com 11: 12: [vars:local] 13: ansible_connection=local 01: [localhost] 02: 127.0.0.1 03: 04: [staging] 05: 192.168.0.1 06: 192.168.0.2 07: 08: [production] 09: www1.example.com 10: www2.example.com 11: 12: [vars:local] 13: ansible_connection=local
  • 11. INSERT DESIGNATOR, IF NEEDED11 INVENTORY (DYNAMIC) Ansible easily supports all of these options via an external inventory system. For example: OpenStack, AWS, GCE or something like that. You can look these dynamic inventories at https://goo.gl/knXn3c ansible Executable Inventory Code JSON formatted Inventory Info via STDOUT IaaS (1) (2) (3) (4) (1) Execute Dynamic Inventory (2) Collect Target information (3) Output Inventory to STDOUT (4) Read Inventory Information
  • 12. INSERT DESIGNATOR, IF NEEDED12 MODULES (1) Ansible has a lot of modules that can be executed directly on remote hosts or through Playbooks. You can see module index at https://goo.gl/yCGC4U Group Target Cloud AWS, GCE, Azure, OpenStack etc... Clustering Commands Crypto Database Group Target Cloud AWS, GCE, Azure, OpenStack etc... Clustering K8S, Pacemaker etc... Commands command, shell, expect etc... Crypto openssl Database MySQL, PostgreSQL, MSSQL etc ... Group Target Cloud AWS, GCE, Azure, OpenStack etc... Clustering Commands Crypto Database Group Target File file, template, stat, unarchive etc... Identity FreeIPA, OpenDJ Inventory Add group and host to inventory Messaging RabbitMQ Monitoring datadog, logstash, nagios etc...
  • 13. INSERT DESIGNATOR, IF NEEDED13 MODULES (2) Group Target Net Tools haproxy, nmcli, ldap, get_url etc... Network Bigswitch, Cumulus, Eos, IOS. Junos etc ... Notification hipcat, irc, slack etc... Packaging rpm, yum, npm, apt etc... Remote management HP iLO, IPMI etc... Source control git, github, gitlab, hg, subversion etc ... Group Target Storage NetApp, zfs etc... System user, group, service, puppet :) etc... Utilities Helper, Logic Web infrastructure apache, nginx, tower etc... Windows IIS, acl, package etc...
  • 14. INSERT DESIGNATOR, IF NEEDED14 PLUGINS Plugins are pieces of code that augment Ansible’s core functionality. You can easily write your own. Please see: https://goo.gl/ZQ9hvb For example: connection plugin ~ https://goo.gl/rLha4L ~
  • 15. INSERT DESIGNATOR, IF NEEDED15 DEMO’S • Let’s play with Ansible Core • Getting Started • Ad-Hoc command • Playbook
  • 16. INSERT DESIGNATOR, IF NEEDED16 Getting started (1) You can install Ansible Core easily. $ sudo yum install epel-release $ git clone https://github.com/ansible/ansible.git $ cd ansible $ git checkout -b v2.3.1.0-1 v2.3.1.0-1 $ make rpm $ sudo yum install rpm-build/ansible-2.3.1.0-100.XXX.el7.centos.noarch.rpm $ ansible --version ansible 2.3.1.0 $ sudo yum install epel-release $ git clone https://github.com/ansible/ansible.git $ cd ansible $ git checkout -b v2.3.1.0-1 v2.3.1.0-1 $ make rpm $ sudo yum install rpm-build/ansible-2.3.1.0-100.XXX.el7.centos.noarch.rpm $ ansible --version ansible 2.3.1.0 Checkout source code from github and make RPM!:
  • 17. INSERT DESIGNATOR, IF NEEDED17 Getting started (2) Writing inventory file. 01: [linux] 02: 192.168.100.100 ansible_user=ec2-user 03: 192.168.100.101 ansible_user=ec2-user 04: 192.168.100.102 ansible_user=ec2-user 05: 06: [win] 07: WIN-PC1.example.com 08: WIN-PC2.example.com 09: WIN-PC3.example.com 10: 11: [win:vars] 12: ansible_port=5986 13: ansible_connection=winrm 14: ansible_winrm_server_cert_validation=ignore 15: ansible_winrm_transport=kerberos 16: ansible_winrm_kerberos_delegation=true 01: [linux] 02: 192.168.100.100 ansible_user=ec2-user 03: 192.168.100.101 ansible_user=ec2-user 04: 192.168.100.102 ansible_user=ec2-user 05: 06: [win] 07: WIN-PC1.example.com 08: WIN-PC2.example.com 09: WIN-PC3.example.com 10: 11: [win:vars] 12: ansible_port=5986 13: ansible_connection=winrm 14: ansible_winrm_server_cert_validation=ignore 15: ansible_winrm_transport=kerberos 16: ansible_winrm_kerberos_delegation=true
  • 18. INSERT DESIGNATOR, IF NEEDED18 Getting started (3) Using dynamic inventory program. $ ./ec2.py –-list $ ./ec2.py --host 192.168.100.100 $ ansible <target> -i ec2.py -m ping $ ./ec2.py –-list $ ./ec2.py --host 192.168.100.100 $ ansible <target> -i ec2.py -m ping
  • 19. INSERT DESIGNATOR, IF NEEDED19 Testing connectivity by Ansible Ansible manages Linux/Unix machines using SSH by default. For the Windows, “winrm” Python module to talk to remote hosts. # Check host list $ ansible linux -i hosts –list-hosts $ ansible win -i hosts –list-hosts # Check connectivity $ ansible linux -i hosts -m ping $ ansible win -i hosts -m win_ping # Check host list $ ansible linux -i hosts –list-hosts $ ansible win -i hosts –list-hosts # Check connectivity $ ansible linux -i hosts -m ping $ ansible win -i hosts -m win_ping You can use ping and win_ping module for testing connectiviry.
  • 20. INSERT DESIGNATOR, IF NEEDED20 Ad-Hoc command Ansible Core supports execute command like parallel ssh. $ ansible linux -i hosts -a "uname -a" SSH password: 10.0.0.14 | SUCCESS | rc=0 >> Linux target00 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 10.0.0.15 | SUCCESS | rc=0 >> Linux target01 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux $ ansible linux -i hosts -a "uname -a" SSH password: 10.0.0.14 | SUCCESS | rc=0 >> Linux target00 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 10.0.0.15 | SUCCESS | rc=0 >> Linux target01 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux Execute command on target nodes via ssh:
  • 21. INSERT DESIGNATOR, IF NEEDED21 Playbook (1) Describe workflow in YAML format $ ansible-playbook -i hosts playbook.yml $ ansible-playbook -i hosts -u <USER> -k -K playbook.yml $ ansible-playbook -i hosts playbook.yml $ ansible-playbook -i hosts -u <USER> -k -K playbook.yml Playbook can execute by ansible-playbook command:
  • 22. INSERT DESIGNATOR, IF NEEDED22 Playbook (2) For example: Install packages by playbook 01: --- 02: - hosts: linux 03: 04: vars: 05: packages: 06: - net-tools 07: - mlocate 08: - wget 09: 10: tasks: 11: - name: install packages 12: yum: 13: name: "{{ item }}" 14: state: present 15: update_cache: yes 16: with_items: "{{ packages }}" 17: become: true 01: --- 02: - hosts: linux 03: 04: vars: 05: packages: 06: - net-tools 07: - mlocate 08: - wget 09: 10: tasks: 11: - name: install packages 12: yum: 13: name: "{{ item }}" 14: state: present 15: update_cache: yes 16: with_items: "{{ packages }}" 17: become: true
  • 23. INSERT DESIGNATOR, IF NEEDED23 Playbook (3) An operation is idempotent if the result of performing it once is exactly the same as the result of performing it repeatedly without any intervening actions. # Try to launch playbook - 1st time (state: changed) $ ansible-playbook -i hosts install_packages.yml … TASK [install packages] ********************************************************************** changed: [172.31.3.136] => (item=[u'net-tools', u'mlocate', u'wget']) ... # Try to launch playbook - 2nd time (state: ok) $ ansible-playbook -i hosts install_packages.yml … TASK [install packages] ********************************************************************** ok: [172.31.5.233] => (item=[u'net-tools', u'mlocate', u'wget']) # Try to launch playbook - 1st time (state: changed) $ ansible-playbook -i hosts install_packages.yml … TASK [install packages] ********************************************************************** changed: [172.31.3.136] => (item=[u'net-tools', u'mlocate', u'wget']) ... # Try to launch playbook - 2nd time (state: ok) $ ansible-playbook -i hosts install_packages.yml … TASK [install packages] ********************************************************************** ok: [172.31.5.233] => (item=[u'net-tools', u'mlocate', u'wget'])
  • 24. INSERT DESIGNATOR, IF NEEDED24 Playbook (4) Copy file to target host using by template module 01: --- 02: - hosts: linux 03: 04: vars: 05: target: /tmp/hello.txt 06: who: Hideki 07: 08: tasks: 09: - name: remote "{{ target }}" 10: file: path="{{ target }}" state=absent 11: - name: copy file using by template 12: template: src=hello.txt.j2 dest="{{ target }}" 13: - name: cat "{{ target }}" 14: shell: cat "{{ target }}" 15: register: result 16: - debug: var=result verbosity=1 01: --- 02: - hosts: linux 03: 04: vars: 05: target: /tmp/hello.txt 06: who: Hideki 07: 08: tasks: 09: - name: remote "{{ target }}" 10: file: path="{{ target }}" state=absent 11: - name: copy file using by template 12: template: src=hello.txt.j2 dest="{{ target }}" 13: - name: cat "{{ target }}" 14: shell: cat "{{ target }}" 15: register: result 16: - debug: var=result verbosity=1
  • 25. INSERT DESIGNATOR, IF NEEDED25 Playbook (5) Copy file to target host using by template module. You can replace keywords in the file by jinja2 format values. 01: # Test for template module 02: 03: Hello, {{ who }} 04: 05: # EOF 01: # Test for template module 02: 03: Hello, {{ who }} 04: 05: # EOF
  • 26. INSERT DESIGNATOR, IF NEEDED26 Playbook (6) Windows Support 1. Install krb packages and related python modules 2. Configure /etc/krb5.conf 3. kinit user@DOMAIN - http://docs.ansible.com/ansible/latest/intro_windows.html $ yum -y install python-devel krb5-devel krb5-libs krb5-workstation $ pip install ntlm-auth==1.0.2 $ pip install pywinrm[kerberos] $ pip install requests-kerberos $ pip install pykerberos $ sudo vi /etc/krb5.conf $ kinit Administrator@EXAMPLE.COM $ yum -y install python-devel krb5-devel krb5-libs krb5-workstation $ pip install ntlm-auth==1.0.2 $ pip install pywinrm[kerberos] $ pip install requests-kerberos $ pip install pykerberos $ sudo vi /etc/krb5.conf $ kinit Administrator@EXAMPLE.COM
  • 27. INSERT DESIGNATOR, IF NEEDED27 Playbook (7) Windows Support 01: --- 02: - hosts: win 03: 04: tasks: 05: - name: ipconfig /all 06: win_command: ipconfig /all 07: register: result 08: 09: - debug: 10: var: result 11: verbosity: 1 01: --- 02: - hosts: win 03: 04: tasks: 05: - name: ipconfig /all 06: win_command: ipconfig /all 07: register: result 08: 09: - debug: 10: var: result 11: verbosity: 1
  • 28. INSERT DESIGNATOR, IF NEEDED28 Playbook (8) Windows Support 01: --- 02: - hosts: win2012 03: 04: vars: 05: updates: 06: - CriticalUpdates 07: - SecurityUpdates 08: 09: tasks: 10: - name: check windows update 11: win_updates: 12: category_names: "{{ item }}" 13: state: searched 14: register: result 15: with_items: "{{ updates }}" 16: 17: - debug: 18: var: result 19: verbosity: 1 01: --- 02: - hosts: win2012 03: 04: vars: 05: updates: 06: - CriticalUpdates 07: - SecurityUpdates 08: 09: tasks: 10: - name: check windows update 11: win_updates: 12: category_names: "{{ item }}" 13: state: searched 14: register: result 15: with_items: "{{ updates }}" 16: 17: - debug: 18: var: result 19: verbosity: 1
  • 29. INSERT DESIGNATOR, IF NEEDED29 Modules document You will see the documentation for modules by ansible-doc command $ ansible-doc --help Usage: ansible-doc [options] [module...] Options: -a, --all Show documentation for all modules -h, --help show this help message and exit -l, --list List available modules -M MODULE_PATH, --module-path=MODULE_PATH specify path(s) to module library (default=None) -s, --snippet Show playbook snippet for specified module(s) -v, --verbose verbose mode (-vvv for more, -vvvv to enable connection debugging) --version show program's version number and exit $ ansible-doc --help Usage: ansible-doc [options] [module...] Options: -a, --all Show documentation for all modules -h, --help show this help message and exit -l, --list List available modules -M MODULE_PATH, --module-path=MODULE_PATH specify path(s) to module library (default=None) -s, --snippet Show playbook snippet for specified module(s) -v, --verbose verbose mode (-vvv for more, -vvvv to enable connection debugging) --version show program's version number and exit
  • 30. INSERT DESIGNATOR, IF NEEDED38 If you want to proceed to the next step, I believe Ansible Core and Tower will help you.