SlideShare a Scribd company logo
1 of 67
Download to read offline
OPENNTF WEBINARS
February OpenNTF Webinar:
Introduction to Ansible for
Newbies
AGENDA
โ€ข Welcome โ€“ Howard Greenberg and Graham Acres
โ€ข Christoph Stoettener, HCL Ambassador
โ€ข Q and A - All
ASKING QUESTIONS
โ€ข First Question โ€“ Will this be recorded?
โ€ข Yes, view on YouTube!!!
โ€ข https://www.youtube.com/user/OpenNTF
โ€ข Use the Questions Pane in GoToWebinar
โ€ข We will get to your questions at the end of
the webinar
โ€ข The speakers will respond to your questions
verbally
โ€ข (not in the Questions pane)
โ€ข Please keep all questions related to the
topics that our speakers are discussing!!!
โ€ข Unrelated Question => post at:
โ€ข http://openntf.slack.com/
THANKS TO THE OPENNTF SPONSORS
โ€ข HCL made a significant contribution to help our
organization
โ€ข Funds these webinars!
โ€ข Contests like Hackathons
โ€ข Running the organization
โ€ข Prominic donates all IT related services
โ€ข Cloud Hosting for OpenNTF
โ€ข Infrastructure management for HCL Domino and Atlassian
Servers
โ€ข System Administration for day-to-day operation
THIS IS OUR COMMUNITY
โ€ข Join us and get involved!
โ€ข We are all volunteers
โ€ข No effort is too small
โ€ข If your idea is bigger than you can do on your own, we
can connect you to a team to work on it
โ€ข Test or help or modify an existing project
โ€ข Write guides or documentation
โ€ข Add reviews on projects / stars on Snippets
NEXT WEBINAR
โ€ข March OpenNTF Webinar: Nomad Mobile -
Tips and Tricks
โ€ข For Domino developers who would like to
optimize their apps for Nomad.
โ€ข Thomas Hampel, HCL
โ€ข Maxx Sutton, HCL
โ€ข Theo Heselmans, HCL Lifetime Ambassador
โ€ข Tom Van Aken, HCL Ambassador
โ€ข Thursday, March 18, 2021 at 11:00 AM (New
York time)
โ€ข www.openntf.org/webinars
INTRODUCTION TO ANSIBLE FOR
NEWBIES
Christoph Stoettner <stoeps@vegardit.com>
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 1 / 60
WHO AM I?
Christoph Stoettner
Senior Consultant @Vegard IT
Focusing on HCL Connections deployments and migrations
Ansible since 2017 โ€” Social Connections 12 [1]
๏š Example code on
1.
github.com/stoeps13/ansible-examples
share.stoeps.de/2017-10-16-ansible4connections.pdf
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 2 / 60
HANDCRAFTED SERVERS
Hard to maintain
Setups are not reproducible
Complicated vendor documentation
Inhouse documentation outdated
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 3 / 60
IMMUTABLE VERSUS MUTABLE
SERVER
Mutable infrastructure just gets updates
Software 6.0 โ†’ + I x 1 + I x 2 + I x 3
In production 6.0 โ†’ i x 3
Result will be different
Immutable creates a new environment with 6.0.x
Migrates data after testing
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 4 / 60
SNOWFLAKE SERVERS
Special tweaks or versions needed for proper function
Exception of your standards
Dif cult to reproduce
Fragile if they need a change
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 5 / 60
TEST ENVIRONMENTS
twitter.com/stahnma/status/634849376343429120
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 6 / 60
WHY ARE DEDICATED
TESTENVIRONMENTS IMPORTANT?
Reliable testing can give you con dence during live migration
Applying Fix 3 over Fix 2 over Fix 1 often different from Fix3 over Fix1
Use the same scripts to build development, test or production systems
Handcrafted is always different from production
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 7 / 60
ADVANTAGES
Developer
Build a development environment which is compareable to production
Adminstrator
Build a test environment to go through a migration
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 8 / 60
BE AS PRECISE AS POSSIBLE
Avoid different hostnames
Production: example.com
Test: test.example.com
Better:
example.com
example-test.com
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 9 / 60
HOW CAN WE SOLVE THIS?
Deployment and Application development should follow a fully automated approach
Avoid Snow akes
Easier to have a full clone of production as test environment
Reducing production bugs caused by con guration differences
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 10 / 60
AUTOMATE DEPLOYMENTS AND
CONFIGURATION CHANGES
Large ecosystem of tools to do automatic deployments
Puppet
Chef
Saltstack
Ansible
Wikipedia OSS Con guration Management
puppet.com
www.chef.io
saltstack.com
ansible.com
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 11 / 60
ANSIBLE
Written in Python
Encryption and Security built in
Easy to read (Everything is YAML)
Easy to use (Extensible via modules)
Uses SSH
YAML Tool Kit
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 12 / 60
ANSIBLE HISTORY
Created by AnsibleWorks Inc, acquired by
Red Hat in 2015
Initial release: 20. February 2012
Stable release: 2.10.6
3.0.0 announced for the 16th of February
(two days ago)
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 13 / 60
A VERY IMPORTANT TERM:
IDEMPOTENCY
๏š Mathematics
denoting an element of a set which is unchanged in value when multiplied or otherwise operated on by itself
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 14 / 60
IDEMPOTENCY โ€” EXAMPLE
Add entry to hosts
Donโ€™t add when present
Change if different
Restart services only when changes were made
Not idempotent
Idempotent
echo "192.168.1.1 cnx-websphere.example.com" >> /etc/hosts
grep -qxF '192.168.1.1 cnx-websphere.example.com' /etc/hosts || 
echo "192.168.1.1 cnx-websphere.example.com" >> /etc/hosts
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 15 / 60
WHAT IS ANSIBLE?
Helps automating tasks during installation and migration
Secure (SSH)
Open (tons of free playbooks)
Well documented
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 16 / 60
WHAT IS ANSIBLE NOT?
A GUI Tool (Get used to console!)[1]
A one click installer
1. Ansible Tower and AWX are browser tools
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 17 / 60
ANSIBLE INSTALLATION
pip install ansible on the machine you want to run it
Newer version than distribution package
Needs internet connection
targets need at least ssh and python installed
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 18 / 60
WINDOWS AND ANSIBLE
Ansible "server" needs Linux (but works with WSL)
Windows support through
Windows Remote Shell (WinRM)
SSH
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 19 / 60
INVENTORY INI OR YAML FORMAT
[leafs]
leaf01.example.com
leaf02.example.com
[spines]
spine01.example.com
spine02.example.com
[network:children]
leafs
spines
---
leafs:
hosts:
leaf01.example.com:
leaf02.example.com:
spines:
hosts:
spine01.example.com:
spine02.example.com:
network:
children:
leafs:
spines:
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 20 / 60
VARIABLES IN INVENTORIES
[leafs]
leaf01.example.com
leaf02.example.com
[leafs:vars]
username=abc
---
leafs:
hosts:
leaf01:
leaf02:
vars:
username: abc
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 21 / 60
VARIABLES
Lots of places to de ne
Presedence important for large
environments
๏ญ no hyphens in variable names!
Allowed variable
Not allowed variable
ldap_user: abc
ldap-user: abc
docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 22 / 60
PLAYBOOK
Run commands (so called tasks) on your inventory servers
Select servers or server groups
Roles
Tasks
Handlers
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 23 / 60
TASKS
Lots of modules built-in
Package install
Copy and Edit les
Create les and folders (directly and with templates)
Manage services
Command
Shell
Sudo aware
Become: true
Become_user: xyz
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 24 / 60
TASKS FOR DIFFERENT OS
1 or use yum
2 valid terms are Redhat | Darwin | Debian | Windows
3 or use apt
4 check OS family (Debian) or distribution
...
tasks:
- name: Install mkpasswd
package:
name: whois
state: present
when: ansible_os_family == "Redhat"
- name: Install mkpasswd
package:
name: expect
state: present
when: ansible_distribution == "Ubuntu"
1
2
3
4
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 25 / 60
EXAMPLE (BUILD AN ANSIBLE ROLE)
Most products of IBM or HCL need disabled SELinux during installation
So letโ€™s disable SELinux on a host
Additional steps will be
Con gure limits.conf
Reboot after changes
Create a user
Install packages with yum
All example les can be found at
Branches named for the steps
github.com/stoeps13/ansible-examples
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 26 / 60
DISABLE SELINUX (INVENTORY)
inventory
1 if hostname is resolvable that is enough
Sometimes you need to add IP or SSH Port! For example
[websphere_servers]
cnx-was.stoeps.internal 1
[websphere_servers]
cnx-was.stoeps.internal ansible_host=10.0.11.101 ansible_port=2222
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 27 / 60
SET SELINUX TO permissive
playbook.yml
1 Run this tasks on this server group
2 Use sudo to execute command
3 sudo to user root
4 tasks (one or multiple tasks)
5 use module selinux
6 policy and state are arguments / parameters for module selinux
---
- hosts: websphere_servers
become: yes
become_user: root
tasks:
- name: ensure selinux is set to permissive
selinux:
policy: targeted
state: permissive
1
2
3
4
5
6
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 28 / 60
Ansible Workshop - step1
Ansible Workshop - step1
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:35
0:35
youtu.be/g8OvWIcmNgU
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 29 / 60
DISPLAY A MESSAGE
playbook.yml
1 register a variable to keep the status of this task
2 run only when the task had status changed
---
- hosts: websphere_servers
become: yes
become_user: root
tasks:
- name: ensure selinux is set to permissive
selinux:
policy: targeted
state: permissive
register: selinux_status
- debug:
msg: "SELinux changed. Please reboot the server to apply changes"
when: selinux_status.changed == true
1
2
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 30 / 60
Ansible Workshop - step2
Ansible Workshop - step2
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:12
0:12
youtu.be/HPFuliVmtBE
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 31 / 60
RUN REBOOT AS A TASK
playbook.yml
1 imagine multiple tasks, youโ€™ll end up with tons of variables and complicated when clauses
---
- hosts: websphere_servers
become: yes
become_user: root
tasks:
- name: ensure selinux is set to permissive
selinux:
policy: targeted
state: permissive
register: selinux_status
- name: reboot
reboot:
msg: "Reboot initiated from Ansible"
connect_timeout: 30
reboot_timeout: 120
test_command: whoami
when: selinux_status.changed == true
1
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 32 / 60
Ansible Workshop - step3
Ansible Workshop - step3
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:25
0:25
youtu.be/JeeZMPitUs4
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 33 / 60
HANDLER
No need to register a variable
Just notify the handler (runs only when task status has changed)
1 Notify the handler that status has changed
hosts: websphere_servers
become: yes
become_user: root
tasks:
- name: ensure selinux is set to permissive
selinux:
policy: targeted
state: permissive
notify: reboot
handlers:
- name: reboot
reboot:
msg: "Reboot initiated from Ansible"
connect_timeout: 30
reboot_timeout: 120
test_command: whoami
1
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 34 / 60
Ansible Workshop - step4
Ansible Workshop - step4
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:29
0:29
youtu.be/OLmGwdNncUM
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 35 / 60
ADD MORE TASKS
1 Reuse the same handler as before (one task must be status changed for a reboot)
---
- hosts: websphere_servers
become: yes
become_user: root
tasks:
- name: ensure selinux is set to permissive
selinux:
policy: targeted
state: permissive
notify: reboot
- name: set number of open files in limits.conf
pam_limits:
domain: root
limit_type: '-'
limit_item: nofile
value: "65535"
notify: reboot
handlers:
- name: reboot
reboot:
msg: "Reboot initiated from Ansible"
connect_timeout: 30
reboot_timeout: 120
test_command: whoami
1
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 36 / 60
Ansible Workshop - step5
Ansible Workshop - step5
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:53
0:53
youtu.be/ya5TXDRSsHk
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 37 / 60
INSTALL A PACKAGE
1 flush_handler initiates the handler to run if needed, normally it runs on the end of the role/playbook
---
- hosts: websphere_servers
become: yes
become_user: root
tasks:
- name: ensure selinux is set to permissive
selinux:
policy: targeted
state: permissive
notify: reboot
- name: Reboot if necessary
meta: flush_handlers
- name: install compatibility package for installation manager
package:
name: compat-libstdc++-33.x86_64
state: present
handlers:
- name: reboot
reboot:
msg: "Reboot initiated from Ansible"
connect_timeout: 30
reboot_timeout: 120
test_command: whoami
1
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 38 / 60
Ansible Workshop - step6a
Ansible Workshop - step6a
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:29
0:29
youtu.be/HO1dkKlzQd0
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 39 / 60
REMOVED flush_handlers
Ansible Workshop - step6c
Ansible Workshop - step6c
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:24
0:24
youtu.be/B4b0LZAhl9c
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 40 / 60
INSTALL MULTIPLE PACKAGES
1 placeholder variable
2 all items will be installed
- name: install compatibility packages for installation manager
package:
name: "{{ item }}"
state: present
with_items:
- compat-libstdc++-33.x86_64
- compat-libstdc++-33.i686
- libstdc++.x86_64
1
2
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 41 / 60
Ansible Workshop - step7
Ansible Workshop - step7
Watch later
Watch later Share
Share
0:00
0:00 /
/ 2:06
2:06
youtu.be/DhGghnYgG0k
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 42 / 60
ADD ADDITIONAL SERVERS
1 Add a second server group
2 Add children of the servergroups to installationmanager
[websphere_servers]
cnx-was.stoeps.internal ansible_host=10.0.11.100
[web_servers]
cnx-web.stoeps.internal ansible_host=10.0.11.101
[installationmanager:children]
web_servers
websphere_servers
1
2
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 43 / 60
ADD SECOND HOSTGROUP
1 tasks for the new hostgroup (will install package to both server groups
---
- hosts: websphere_servers
tasks:
- name: ensure selinux is set to permissive
selinux:
[...]
handlers:
- name: reboot
[...]
- hosts: installationmanager
tasks:
- name: install compatibility package for installation manager
package:
name: "{{ item }}"
state: present
with_items:
- compat-libstdc++-33.x86_64
- compat-libstdc++-33.i686
- libstdc++.x86_64
1
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 44 / 60
Ansible Workshop - step8
Ansible Workshop - step8
Watch later
Watch later Share
Share
0:00
0:00 /
/ 2:22
2:22
youtu.be/P55Dp5EwpBY
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 45 / 60
ADD A GROUP AND A USER
1 Module needs hash, calculate with python -c "import crypt; print crypt.crypt('password')"
- name: add group for WebSphere users
group:
name: was
state: present
- name: add user for im and websphere (non_root)
user:
name: wassys
comment: WebSphere user
uid: 2000
group: was
shell: /bin/bash
state: present
password: "$6$40GE6/6h6A4UhpBT$kPtpBLe3Komc2bmadagr6S.v0/VRPJoJunEaMl5PBhAb4F5FTWsZff/6CYtTQlVm8Qa2wya4HV
1
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 46 / 60
Ansible Workshop - step9
Ansible Workshop - step9
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:29
0:29
youtu.be/z06fB5WRLyE
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 47 / 60
USE VARIABLES
Add to inventory
1 Calculate the password hash
2 register variable
3 Use stdout (output of hash command) for password hash
...
[installationmanager:vars]
was_user=wassys
was_user_password=password
- name: hash user password
shell: "python -c "import crypt; print crypt.crypt('{{ was_user_password }}')""
register: was_user_password_hash
changed_when: false
- name: add user for im and websphere (non_root)
user:
name: "{{ was_user }}"
comment: WebSphere user
uid: 2000
state: present
update_password: on_create
password: "{{ was_user_password_hash.stdout }}"
1
2
3
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 48 / 60
Ansible Workshop - step10
Ansible Workshop - step10
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:27
0:27
youtu.be/GPxHlQuU7N8
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 49 / 60
CREATE SEPARATE ROLES
playbook.yml
1 put into roles/ansible-demo2/tasks/main.yml
2 put into roles/ansible-demo2/handlers/main.yml
- hosts: websphere_servers
become: yes
become_user: root
tasks:
- name: ensure selinux is set to permissive
selinux:
policy: targeted
state: permissive
notify: reboot
...
handlers:
- name: reboot
reboot:
msg: "Reboot initiated from Ansible"
connect_timeout: 30
reboot_timeout: 120
test_command: whoami
1
2
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 50 / 60
VARIABLES DEFAULTS
Add a folder defaults to the role
Add used variables and their defaults
So even when you forget to de ne the variable, the role will run
ansible_demo2/defaults/main.yaml
1 add a variable and read the value from variable was_user, if not present use default wassys
2 default password
__websphere_user: "{{ was_user | default('wassys') }}"
__websphere_user_password: "{{ was_user_password | default('password') }}"
1
2
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 51 / 60
Ansible Workshop - step11
Ansible Workshop - step11
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:21
0:21
youtu.be/Yca0gHKOkxI
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 52 / 60
USE ANSIBLE VAULT TO SECURE THE
PASSWORD
move the
variables to group_vars/installationmanager.yml
passwords to group_vars/all.yaml
encrypt all.yml
ansible-vault encrypt group_vars/all.yml
ansible-playbook -i inventory playbook.yml --ask-vault-pass
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 53 / 60
Ansible Workshop - step12
Ansible Workshop - step12
Watch later
Watch later Share
Share
0:00
0:00 /
/ 0:34
0:34
youtu.be/Ktyy3MKeoRQ
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 54 / 60
RUN ANSIBLE PLAYBOOK
Manually through your shell
Ansible Tower (enterprise server, $$$)
On Windows use Windows Subsystem for Linux (WSL)
Ansible AWX
Jenkins (Pipeline)
Directly during provisioning of Vagrant and Terraform
github.com/ansible/awx
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 55 / 60
WHERE TO FIND ROLES?
Simple said: Download or write them
Check
Download role ansible-playbook install โ€ฆ
roles and collections make Ansible modular
Download complete repositories like connections-automation
galaxy.ansible.com
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 56 / 60
SECURITY
How do we store passwords or deployment keys
Ansible Vault
AES265 encrypted
Encrypted during ansible-playbook run
Ansible AWX
Allow users to run tasks and playbooks against hosts without having a root or user
account on it
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 57 / 60
WHERE TO START (LINKS)
Documentation
Books
Jeff Geerling: Ansible for Devops
Youtube
docs.ansible.com/intro_getting_started.html
github.com/orgs/ansible/people
Ansible 101 with Jeff Geerling
Build and deploy container images and containers
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 58 / 60
ADMINISTRATOR OR DEVELOPER
Have a look at Ansible
Saves you a ton of time
Easy to deploy
Easy to deploy different environments
Dev
QA
Test
Production
KISS
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 59 / 60
CONNECTIONS CUSTOMERS
Have a look at
github.com/HCL-TECH-SOFTWARE/connections-automation
OpenNTF Webinar
This work is licensed under a
Christoph Stoettner ยท @stoeps
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 60 / 60
QUESTIONS?
Use the GoToWebinar Questions Pane
Please keep all questions related to the
topics that our speakers are discussing!!!
Unrelated Question => post at:
http://openntf.slack.com/

More Related Content

What's hot

September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)Howard Greenberg
ย 
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And DxlBp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxldominion
ย 
Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax PluginsHnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax Pluginsdominion
ย 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGeoff Hoffman
ย 
Contribute 101: Compose/Kitematic/Machine by Ben Bonnefoy
Contribute 101: Compose/Kitematic/Machine by Ben BonnefoyContribute 101: Compose/Kitematic/Machine by Ben Bonnefoy
Contribute 101: Compose/Kitematic/Machine by Ben BonnefoyDocker, Inc.
ย 
OpenNTF Webinar, May 19, 2020
OpenNTF Webinar, May 19, 2020OpenNTF Webinar, May 19, 2020
OpenNTF Webinar, May 19, 2020Howard Greenberg
ย 
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...Howard Greenberg
ย 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerJirayut Nimsaeng
ย 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with JenkinsJadson Santos
ย 
Testing with Docker
Testing with DockerTesting with Docker
Testing with Dockertoffermann
ย 
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryCodifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryAlvin Huang
ย 
Dockercon 2018 EU Updates
Dockercon 2018 EU Updates Dockercon 2018 EU Updates
Dockercon 2018 EU Updates Ajeet Singh Raina
ย 
Collaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationCollaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationAnne Gentle
ย 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for TestingCarlos Sanchez
ย 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsMandi Walls
ย 
Improve your Java Environment with Docker
Improve your Java Environment with DockerImprove your Java Environment with Docker
Improve your Java Environment with DockerHanoiJUG
ย 
Brujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityBrujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityDamien Coraboeuf
ย 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeTeerapat Khunpech
ย 
How to Successfully Build a Local (Docker) Community
How to Successfully Build a Local (Docker) CommunityHow to Successfully Build a Local (Docker) Community
How to Successfully Build a Local (Docker) CommunityMathias Renner
ย 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins UsersJules Pierre-Louis
ย 

What's hot (20)

September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
ย 
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And DxlBp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
ย 
Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax PluginsHnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
ย 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
ย 
Contribute 101: Compose/Kitematic/Machine by Ben Bonnefoy
Contribute 101: Compose/Kitematic/Machine by Ben BonnefoyContribute 101: Compose/Kitematic/Machine by Ben Bonnefoy
Contribute 101: Compose/Kitematic/Machine by Ben Bonnefoy
ย 
OpenNTF Webinar, May 19, 2020
OpenNTF Webinar, May 19, 2020OpenNTF Webinar, May 19, 2020
OpenNTF Webinar, May 19, 2020
ย 
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
ย 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
ย 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with Jenkins
ย 
Testing with Docker
Testing with DockerTesting with Docker
Testing with Docker
ย 
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryCodifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
ย 
Dockercon 2018 EU Updates
Dockercon 2018 EU Updates Dockercon 2018 EU Updates
Dockercon 2018 EU Updates
ย 
Collaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source DocumentationCollaborating on GitHub for Open Source Documentation
Collaborating on GitHub for Open Source Documentation
ย 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
ย 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in Operations
ย 
Improve your Java Environment with Docker
Improve your Java Environment with DockerImprove your Java Environment with Docker
Improve your Java Environment with Docker
ย 
Brujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityBrujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalability
ย 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
ย 
How to Successfully Build a Local (Docker) Community
How to Successfully Build a Local (Docker) CommunityHow to Successfully Build a Local (Docker) Community
How to Successfully Build a Local (Docker) Community
ย 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
ย 

Similar to February OpenNTF Webinar: Introduction to Ansible for Newbies

Octopus Deploy @Erie Day of Code
Octopus Deploy @Erie Day of CodeOctopus Deploy @Erie Day of Code
Octopus Deploy @Erie Day of CodeCassey Lottman
ย 
Learn OpenStack from trystack.cn
Learn OpenStack from trystack.cnLearn OpenStack from trystack.cn
Learn OpenStack from trystack.cnOpenCity Community
ย 
ON.LAB Mininet
ON.LAB MininetON.LAB Mininet
ON.LAB MininetIsabelle Guis
ย 
How open source is driving DevOps innovation: CloudOpen NA 2015
How open source is driving DevOps innovation: CloudOpen NA 2015How open source is driving DevOps innovation: CloudOpen NA 2015
How open source is driving DevOps innovation: CloudOpen NA 2015Gordon Haff
ย 
When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?Niklas Heidloff
ย 
Opencast Project Update at Open Apereo 2015
Opencast Project Update at Open Apereo 2015Opencast Project Update at Open Apereo 2015
Opencast Project Update at Open Apereo 2015Stephen Marquard
ย 
How to Achieve more through Collaboration
How to Achieve more through Collaboration How to Achieve more through Collaboration
How to Achieve more through Collaboration Damien Garros
ย 
DevOps and Drupal
DevOps and DrupalDevOps and Drupal
DevOps and DrupalAarno Aukia
ย 
OaaS:Open as a Strategy
OaaS:Open as a StrategyOaaS:Open as a Strategy
OaaS:Open as a StrategyOpenCity Community
ย 
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...Niklas Heidloff
ย 
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)ITCamp
ย 
XPDDS18: Xen Project Weather Report 2018
XPDDS18: Xen Project Weather Report 2018XPDDS18: Xen Project Weather Report 2018
XPDDS18: Xen Project Weather Report 2018The Linux Foundation
ย 
Continuous Delivery With Containers
Continuous Delivery With ContainersContinuous Delivery With Containers
Continuous Delivery With ContainersAll Things Open
ย 
The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13
The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13
The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13Dominopoint - Italian Lotus User Group
ย 
DevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldDevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldWinston Laoh
ย 
Micro services may not be the best idea
Micro services may not be the best ideaMicro services may not be the best idea
Micro services may not be the best ideaSamuel ROZE
ย 
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016Amazon Web Services
ย 
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & HybridAWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & HybridAmazon Web Services
ย 
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps and Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps and HybridAWS Summit Tel Aviv - Enterprise Track - Enterprise Apps and Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps and HybridAmazon Web Services
ย 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerBill Scott
ย 

Similar to February OpenNTF Webinar: Introduction to Ansible for Newbies (20)

Octopus Deploy @Erie Day of Code
Octopus Deploy @Erie Day of CodeOctopus Deploy @Erie Day of Code
Octopus Deploy @Erie Day of Code
ย 
Learn OpenStack from trystack.cn
Learn OpenStack from trystack.cnLearn OpenStack from trystack.cn
Learn OpenStack from trystack.cn
ย 
ON.LAB Mininet
ON.LAB MininetON.LAB Mininet
ON.LAB Mininet
ย 
How open source is driving DevOps innovation: CloudOpen NA 2015
How open source is driving DevOps innovation: CloudOpen NA 2015How open source is driving DevOps innovation: CloudOpen NA 2015
How open source is driving DevOps innovation: CloudOpen NA 2015
ย 
When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?
ย 
Opencast Project Update at Open Apereo 2015
Opencast Project Update at Open Apereo 2015Opencast Project Update at Open Apereo 2015
Opencast Project Update at Open Apereo 2015
ย 
How to Achieve more through Collaboration
How to Achieve more through Collaboration How to Achieve more through Collaboration
How to Achieve more through Collaboration
ย 
DevOps and Drupal
DevOps and DrupalDevOps and Drupal
DevOps and Drupal
ย 
OaaS:Open as a Strategy
OaaS:Open as a StrategyOaaS:Open as a Strategy
OaaS:Open as a Strategy
ย 
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
ย 
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
ย 
XPDDS18: Xen Project Weather Report 2018
XPDDS18: Xen Project Weather Report 2018XPDDS18: Xen Project Weather Report 2018
XPDDS18: Xen Project Weather Report 2018
ย 
Continuous Delivery With Containers
Continuous Delivery With ContainersContinuous Delivery With Containers
Continuous Delivery With Containers
ย 
The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13
The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13
The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13
ย 
DevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldDevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps World
ย 
Micro services may not be the best idea
Micro services may not be the best ideaMicro services may not be the best idea
Micro services may not be the best idea
ย 
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
ย 
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & HybridAWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps & Hybrid
ย 
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps and Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps and HybridAWS Summit Tel Aviv - Enterprise Track - Enterprise Apps and Hybrid
AWS Summit Tel Aviv - Enterprise Track - Enterprise Apps and Hybrid
ย 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partner
ย 

More from Howard Greenberg

January OpenNTF Webinar - Backup your Domino Server - New Options in V12
January OpenNTF Webinar - Backup your Domino Server - New Options in V12January OpenNTF Webinar - Backup your Domino Server - New Options in V12
January OpenNTF Webinar - Backup your Domino Server - New Options in V12Howard Greenberg
ย 
BRPA November Meeting
BRPA November MeetingBRPA November Meeting
BRPA November MeetingHoward Greenberg
ย 
June OpenNTF Webinar - Domino V12 Certification Manager
June OpenNTF Webinar - Domino V12 Certification ManagerJune OpenNTF Webinar - Domino V12 Certification Manager
June OpenNTF Webinar - Domino V12 Certification ManagerHoward Greenberg
ย 
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesApril, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesHoward Greenberg
ย 
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!Howard Greenberg
ย 
Open ntf 2020-jun
Open ntf 2020-junOpen ntf 2020-jun
Open ntf 2020-junHoward Greenberg
ย 
Dev112 let's calendar that
Dev112   let's calendar thatDev112   let's calendar that
Dev112 let's calendar thatHoward Greenberg
ย 
Bp101-Can Domino Be Hacked
Bp101-Can Domino Be HackedBp101-Can Domino Be Hacked
Bp101-Can Domino Be HackedHoward Greenberg
ย 
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...Howard Greenberg
ย 
Connect 2016-Move Your XPages Applications to the Fast Lane
Connect 2016-Move Your XPages Applications to the Fast LaneConnect 2016-Move Your XPages Applications to the Fast Lane
Connect 2016-Move Your XPages Applications to the Fast LaneHoward Greenberg
ย 
Webinar: From Frustration to Fascination: Dissecting Replication
Webinar: From Frustration to Fascination: Dissecting ReplicationWebinar: From Frustration to Fascination: Dissecting Replication
Webinar: From Frustration to Fascination: Dissecting ReplicationHoward Greenberg
ย 
XPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 WebinarXPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 WebinarHoward Greenberg
ย 
Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014
Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014
Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014Howard Greenberg
ย 
Connect 2014 - JMP102: Creating a Great XPages User Interface
Connect 2014 - JMP102: Creating a Great XPages User InterfaceConnect 2014 - JMP102: Creating a Great XPages User Interface
Connect 2014 - JMP102: Creating a Great XPages User InterfaceHoward Greenberg
ย 
Connect 2014 - BP202: Rapid XPages Development Using the Application Layout C...
Connect 2014 - BP202: Rapid XPages Development Using the Application Layout C...Connect 2014 - BP202: Rapid XPages Development Using the Application Layout C...
Connect 2014 - BP202: Rapid XPages Development Using the Application Layout C...Howard Greenberg
ย 
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!Howard Greenberg
ย 

More from Howard Greenberg (17)

January OpenNTF Webinar - Backup your Domino Server - New Options in V12
January OpenNTF Webinar - Backup your Domino Server - New Options in V12January OpenNTF Webinar - Backup your Domino Server - New Options in V12
January OpenNTF Webinar - Backup your Domino Server - New Options in V12
ย 
BRPA November Meeting
BRPA November MeetingBRPA November Meeting
BRPA November Meeting
ย 
June OpenNTF Webinar - Domino V12 Certification Manager
June OpenNTF Webinar - Domino V12 Certification ManagerJune OpenNTF Webinar - Domino V12 Certification Manager
June OpenNTF Webinar - Domino V12 Certification Manager
ย 
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesApril, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
ย 
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
ย 
Open ntf 2020-jun
Open ntf 2020-junOpen ntf 2020-jun
Open ntf 2020-jun
ย 
Dev112 let's calendar that
Dev112   let's calendar thatDev112   let's calendar that
Dev112 let's calendar that
ย 
Bp101-Can Domino Be Hacked
Bp101-Can Domino Be HackedBp101-Can Domino Be Hacked
Bp101-Can Domino Be Hacked
ย 
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
ย 
Connect 2016-Move Your XPages Applications to the Fast Lane
Connect 2016-Move Your XPages Applications to the Fast LaneConnect 2016-Move Your XPages Applications to the Fast Lane
Connect 2016-Move Your XPages Applications to the Fast Lane
ย 
May 2014-webinar
May 2014-webinarMay 2014-webinar
May 2014-webinar
ย 
Webinar: From Frustration to Fascination: Dissecting Replication
Webinar: From Frustration to Fascination: Dissecting ReplicationWebinar: From Frustration to Fascination: Dissecting Replication
Webinar: From Frustration to Fascination: Dissecting Replication
ย 
XPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 WebinarXPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 Webinar
ย 
Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014
Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014
Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014
ย 
Connect 2014 - JMP102: Creating a Great XPages User Interface
Connect 2014 - JMP102: Creating a Great XPages User InterfaceConnect 2014 - JMP102: Creating a Great XPages User Interface
Connect 2014 - JMP102: Creating a Great XPages User Interface
ย 
Connect 2014 - BP202: Rapid XPages Development Using the Application Layout C...
Connect 2014 - BP202: Rapid XPages Development Using the Application Layout C...Connect 2014 - BP202: Rapid XPages Development Using the Application Layout C...
Connect 2014 - BP202: Rapid XPages Development Using the Application Layout C...
ย 
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!
Jmp103-Get the Jump on Mobilizing Your Notes and Domino Applications Today!
ย 

Recently uploaded

Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
ย 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
ย 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
ย 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kakori Lucknow best sexual service Online โ˜‚๏ธ
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kakori Lucknow best sexual service Online  โ˜‚๏ธCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kakori Lucknow best sexual service Online  โ˜‚๏ธ
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kakori Lucknow best sexual service Online โ˜‚๏ธanilsa9823
ย 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
ย 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Badshah Nagar Lucknow best Female service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Badshah Nagar Lucknow best Female serviceCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Badshah Nagar Lucknow best Female service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
ย 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
ย 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto Gonzรกlez Trastoy
ย 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
ย 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
ย 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
ย 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
ย 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanโ€™s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanโ€™s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanโ€™s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanโ€™s ...OnePlan Solutions
ย 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
ย 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
ย 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
ย 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfWilly Marroquin (WillyDevNET)
ย 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
ย 

Recently uploaded (20)

Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
ย 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
ย 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
ย 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kakori Lucknow best sexual service Online โ˜‚๏ธ
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kakori Lucknow best sexual service Online  โ˜‚๏ธCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kakori Lucknow best sexual service Online  โ˜‚๏ธ
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kakori Lucknow best sexual service Online โ˜‚๏ธ
ย 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
ย 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Badshah Nagar Lucknow best Female service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Badshah Nagar Lucknow best Female serviceCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Badshah Nagar Lucknow best Female service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Badshah Nagar Lucknow best Female service
ย 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
ย 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
ย 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
ย 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
ย 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
ย 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
ย 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanโ€™s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanโ€™s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanโ€™s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlanโ€™s ...
ย 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
ย 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
ย 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
ย 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
ย 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
ย 

February OpenNTF Webinar: Introduction to Ansible for Newbies

  • 1. OPENNTF WEBINARS February OpenNTF Webinar: Introduction to Ansible for Newbies
  • 2. AGENDA โ€ข Welcome โ€“ Howard Greenberg and Graham Acres โ€ข Christoph Stoettener, HCL Ambassador โ€ข Q and A - All
  • 3. ASKING QUESTIONS โ€ข First Question โ€“ Will this be recorded? โ€ข Yes, view on YouTube!!! โ€ข https://www.youtube.com/user/OpenNTF โ€ข Use the Questions Pane in GoToWebinar โ€ข We will get to your questions at the end of the webinar โ€ข The speakers will respond to your questions verbally โ€ข (not in the Questions pane) โ€ข Please keep all questions related to the topics that our speakers are discussing!!! โ€ข Unrelated Question => post at: โ€ข http://openntf.slack.com/
  • 4. THANKS TO THE OPENNTF SPONSORS โ€ข HCL made a significant contribution to help our organization โ€ข Funds these webinars! โ€ข Contests like Hackathons โ€ข Running the organization โ€ข Prominic donates all IT related services โ€ข Cloud Hosting for OpenNTF โ€ข Infrastructure management for HCL Domino and Atlassian Servers โ€ข System Administration for day-to-day operation
  • 5. THIS IS OUR COMMUNITY โ€ข Join us and get involved! โ€ข We are all volunteers โ€ข No effort is too small โ€ข If your idea is bigger than you can do on your own, we can connect you to a team to work on it โ€ข Test or help or modify an existing project โ€ข Write guides or documentation โ€ข Add reviews on projects / stars on Snippets
  • 6. NEXT WEBINAR โ€ข March OpenNTF Webinar: Nomad Mobile - Tips and Tricks โ€ข For Domino developers who would like to optimize their apps for Nomad. โ€ข Thomas Hampel, HCL โ€ข Maxx Sutton, HCL โ€ข Theo Heselmans, HCL Lifetime Ambassador โ€ข Tom Van Aken, HCL Ambassador โ€ข Thursday, March 18, 2021 at 11:00 AM (New York time) โ€ข www.openntf.org/webinars
  • 7. INTRODUCTION TO ANSIBLE FOR NEWBIES Christoph Stoettner <stoeps@vegardit.com> OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 1 / 60
  • 8. WHO AM I? Christoph Stoettner Senior Consultant @Vegard IT Focusing on HCL Connections deployments and migrations Ansible since 2017 โ€” Social Connections 12 [1] ๏š Example code on 1. github.com/stoeps13/ansible-examples share.stoeps.de/2017-10-16-ansible4connections.pdf OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 2 / 60
  • 9. HANDCRAFTED SERVERS Hard to maintain Setups are not reproducible Complicated vendor documentation Inhouse documentation outdated OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 3 / 60
  • 10. IMMUTABLE VERSUS MUTABLE SERVER Mutable infrastructure just gets updates Software 6.0 โ†’ + I x 1 + I x 2 + I x 3 In production 6.0 โ†’ i x 3 Result will be different Immutable creates a new environment with 6.0.x Migrates data after testing OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 4 / 60
  • 11. SNOWFLAKE SERVERS Special tweaks or versions needed for proper function Exception of your standards Dif cult to reproduce Fragile if they need a change OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 5 / 60
  • 12. TEST ENVIRONMENTS twitter.com/stahnma/status/634849376343429120 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 6 / 60
  • 13. WHY ARE DEDICATED TESTENVIRONMENTS IMPORTANT? Reliable testing can give you con dence during live migration Applying Fix 3 over Fix 2 over Fix 1 often different from Fix3 over Fix1 Use the same scripts to build development, test or production systems Handcrafted is always different from production OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 7 / 60
  • 14. ADVANTAGES Developer Build a development environment which is compareable to production Adminstrator Build a test environment to go through a migration OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 8 / 60
  • 15. BE AS PRECISE AS POSSIBLE Avoid different hostnames Production: example.com Test: test.example.com Better: example.com example-test.com OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 9 / 60
  • 16. HOW CAN WE SOLVE THIS? Deployment and Application development should follow a fully automated approach Avoid Snow akes Easier to have a full clone of production as test environment Reducing production bugs caused by con guration differences OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 10 / 60
  • 17. AUTOMATE DEPLOYMENTS AND CONFIGURATION CHANGES Large ecosystem of tools to do automatic deployments Puppet Chef Saltstack Ansible Wikipedia OSS Con guration Management puppet.com www.chef.io saltstack.com ansible.com OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 11 / 60
  • 18. ANSIBLE Written in Python Encryption and Security built in Easy to read (Everything is YAML) Easy to use (Extensible via modules) Uses SSH YAML Tool Kit OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 12 / 60
  • 19. ANSIBLE HISTORY Created by AnsibleWorks Inc, acquired by Red Hat in 2015 Initial release: 20. February 2012 Stable release: 2.10.6 3.0.0 announced for the 16th of February (two days ago) OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 13 / 60
  • 20. A VERY IMPORTANT TERM: IDEMPOTENCY ๏š Mathematics denoting an element of a set which is unchanged in value when multiplied or otherwise operated on by itself OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 14 / 60
  • 21. IDEMPOTENCY โ€” EXAMPLE Add entry to hosts Donโ€™t add when present Change if different Restart services only when changes were made Not idempotent Idempotent echo "192.168.1.1 cnx-websphere.example.com" >> /etc/hosts grep -qxF '192.168.1.1 cnx-websphere.example.com' /etc/hosts || echo "192.168.1.1 cnx-websphere.example.com" >> /etc/hosts OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 15 / 60
  • 22. WHAT IS ANSIBLE? Helps automating tasks during installation and migration Secure (SSH) Open (tons of free playbooks) Well documented OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 16 / 60
  • 23. WHAT IS ANSIBLE NOT? A GUI Tool (Get used to console!)[1] A one click installer 1. Ansible Tower and AWX are browser tools OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 17 / 60
  • 24. ANSIBLE INSTALLATION pip install ansible on the machine you want to run it Newer version than distribution package Needs internet connection targets need at least ssh and python installed OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 18 / 60
  • 25. WINDOWS AND ANSIBLE Ansible "server" needs Linux (but works with WSL) Windows support through Windows Remote Shell (WinRM) SSH OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 19 / 60
  • 26. INVENTORY INI OR YAML FORMAT [leafs] leaf01.example.com leaf02.example.com [spines] spine01.example.com spine02.example.com [network:children] leafs spines --- leafs: hosts: leaf01.example.com: leaf02.example.com: spines: hosts: spine01.example.com: spine02.example.com: network: children: leafs: spines: OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 20 / 60
  • 27. VARIABLES IN INVENTORIES [leafs] leaf01.example.com leaf02.example.com [leafs:vars] username=abc --- leafs: hosts: leaf01: leaf02: vars: username: abc OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 21 / 60
  • 28. VARIABLES Lots of places to de ne Presedence important for large environments ๏ญ no hyphens in variable names! Allowed variable Not allowed variable ldap_user: abc ldap-user: abc docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 22 / 60
  • 29. PLAYBOOK Run commands (so called tasks) on your inventory servers Select servers or server groups Roles Tasks Handlers OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 23 / 60
  • 30. TASKS Lots of modules built-in Package install Copy and Edit les Create les and folders (directly and with templates) Manage services Command Shell Sudo aware Become: true Become_user: xyz OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 24 / 60
  • 31. TASKS FOR DIFFERENT OS 1 or use yum 2 valid terms are Redhat | Darwin | Debian | Windows 3 or use apt 4 check OS family (Debian) or distribution ... tasks: - name: Install mkpasswd package: name: whois state: present when: ansible_os_family == "Redhat" - name: Install mkpasswd package: name: expect state: present when: ansible_distribution == "Ubuntu" 1 2 3 4 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 25 / 60
  • 32. EXAMPLE (BUILD AN ANSIBLE ROLE) Most products of IBM or HCL need disabled SELinux during installation So letโ€™s disable SELinux on a host Additional steps will be Con gure limits.conf Reboot after changes Create a user Install packages with yum All example les can be found at Branches named for the steps github.com/stoeps13/ansible-examples OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 26 / 60
  • 33. DISABLE SELINUX (INVENTORY) inventory 1 if hostname is resolvable that is enough Sometimes you need to add IP or SSH Port! For example [websphere_servers] cnx-was.stoeps.internal 1 [websphere_servers] cnx-was.stoeps.internal ansible_host=10.0.11.101 ansible_port=2222 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 27 / 60
  • 34. SET SELINUX TO permissive playbook.yml 1 Run this tasks on this server group 2 Use sudo to execute command 3 sudo to user root 4 tasks (one or multiple tasks) 5 use module selinux 6 policy and state are arguments / parameters for module selinux --- - hosts: websphere_servers become: yes become_user: root tasks: - name: ensure selinux is set to permissive selinux: policy: targeted state: permissive 1 2 3 4 5 6 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 28 / 60
  • 35. Ansible Workshop - step1 Ansible Workshop - step1 Watch later Watch later Share Share 0:00 0:00 / / 0:35 0:35 youtu.be/g8OvWIcmNgU OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 29 / 60
  • 36. DISPLAY A MESSAGE playbook.yml 1 register a variable to keep the status of this task 2 run only when the task had status changed --- - hosts: websphere_servers become: yes become_user: root tasks: - name: ensure selinux is set to permissive selinux: policy: targeted state: permissive register: selinux_status - debug: msg: "SELinux changed. Please reboot the server to apply changes" when: selinux_status.changed == true 1 2 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 30 / 60
  • 37. Ansible Workshop - step2 Ansible Workshop - step2 Watch later Watch later Share Share 0:00 0:00 / / 0:12 0:12 youtu.be/HPFuliVmtBE OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 31 / 60
  • 38. RUN REBOOT AS A TASK playbook.yml 1 imagine multiple tasks, youโ€™ll end up with tons of variables and complicated when clauses --- - hosts: websphere_servers become: yes become_user: root tasks: - name: ensure selinux is set to permissive selinux: policy: targeted state: permissive register: selinux_status - name: reboot reboot: msg: "Reboot initiated from Ansible" connect_timeout: 30 reboot_timeout: 120 test_command: whoami when: selinux_status.changed == true 1 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 32 / 60
  • 39. Ansible Workshop - step3 Ansible Workshop - step3 Watch later Watch later Share Share 0:00 0:00 / / 0:25 0:25 youtu.be/JeeZMPitUs4 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 33 / 60
  • 40. HANDLER No need to register a variable Just notify the handler (runs only when task status has changed) 1 Notify the handler that status has changed hosts: websphere_servers become: yes become_user: root tasks: - name: ensure selinux is set to permissive selinux: policy: targeted state: permissive notify: reboot handlers: - name: reboot reboot: msg: "Reboot initiated from Ansible" connect_timeout: 30 reboot_timeout: 120 test_command: whoami 1 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 34 / 60
  • 41. Ansible Workshop - step4 Ansible Workshop - step4 Watch later Watch later Share Share 0:00 0:00 / / 0:29 0:29 youtu.be/OLmGwdNncUM OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 35 / 60
  • 42. ADD MORE TASKS 1 Reuse the same handler as before (one task must be status changed for a reboot) --- - hosts: websphere_servers become: yes become_user: root tasks: - name: ensure selinux is set to permissive selinux: policy: targeted state: permissive notify: reboot - name: set number of open files in limits.conf pam_limits: domain: root limit_type: '-' limit_item: nofile value: "65535" notify: reboot handlers: - name: reboot reboot: msg: "Reboot initiated from Ansible" connect_timeout: 30 reboot_timeout: 120 test_command: whoami 1 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 36 / 60
  • 43. Ansible Workshop - step5 Ansible Workshop - step5 Watch later Watch later Share Share 0:00 0:00 / / 0:53 0:53 youtu.be/ya5TXDRSsHk OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 37 / 60
  • 44. INSTALL A PACKAGE 1 flush_handler initiates the handler to run if needed, normally it runs on the end of the role/playbook --- - hosts: websphere_servers become: yes become_user: root tasks: - name: ensure selinux is set to permissive selinux: policy: targeted state: permissive notify: reboot - name: Reboot if necessary meta: flush_handlers - name: install compatibility package for installation manager package: name: compat-libstdc++-33.x86_64 state: present handlers: - name: reboot reboot: msg: "Reboot initiated from Ansible" connect_timeout: 30 reboot_timeout: 120 test_command: whoami 1 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 38 / 60
  • 45. Ansible Workshop - step6a Ansible Workshop - step6a Watch later Watch later Share Share 0:00 0:00 / / 0:29 0:29 youtu.be/HO1dkKlzQd0 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 39 / 60
  • 46. REMOVED flush_handlers Ansible Workshop - step6c Ansible Workshop - step6c Watch later Watch later Share Share 0:00 0:00 / / 0:24 0:24 youtu.be/B4b0LZAhl9c OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 40 / 60
  • 47. INSTALL MULTIPLE PACKAGES 1 placeholder variable 2 all items will be installed - name: install compatibility packages for installation manager package: name: "{{ item }}" state: present with_items: - compat-libstdc++-33.x86_64 - compat-libstdc++-33.i686 - libstdc++.x86_64 1 2 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 41 / 60
  • 48. Ansible Workshop - step7 Ansible Workshop - step7 Watch later Watch later Share Share 0:00 0:00 / / 2:06 2:06 youtu.be/DhGghnYgG0k OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 42 / 60
  • 49. ADD ADDITIONAL SERVERS 1 Add a second server group 2 Add children of the servergroups to installationmanager [websphere_servers] cnx-was.stoeps.internal ansible_host=10.0.11.100 [web_servers] cnx-web.stoeps.internal ansible_host=10.0.11.101 [installationmanager:children] web_servers websphere_servers 1 2 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 43 / 60
  • 50. ADD SECOND HOSTGROUP 1 tasks for the new hostgroup (will install package to both server groups --- - hosts: websphere_servers tasks: - name: ensure selinux is set to permissive selinux: [...] handlers: - name: reboot [...] - hosts: installationmanager tasks: - name: install compatibility package for installation manager package: name: "{{ item }}" state: present with_items: - compat-libstdc++-33.x86_64 - compat-libstdc++-33.i686 - libstdc++.x86_64 1 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 44 / 60
  • 51. Ansible Workshop - step8 Ansible Workshop - step8 Watch later Watch later Share Share 0:00 0:00 / / 2:22 2:22 youtu.be/P55Dp5EwpBY OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 45 / 60
  • 52. ADD A GROUP AND A USER 1 Module needs hash, calculate with python -c "import crypt; print crypt.crypt('password')" - name: add group for WebSphere users group: name: was state: present - name: add user for im and websphere (non_root) user: name: wassys comment: WebSphere user uid: 2000 group: was shell: /bin/bash state: present password: "$6$40GE6/6h6A4UhpBT$kPtpBLe3Komc2bmadagr6S.v0/VRPJoJunEaMl5PBhAb4F5FTWsZff/6CYtTQlVm8Qa2wya4HV 1 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 46 / 60
  • 53. Ansible Workshop - step9 Ansible Workshop - step9 Watch later Watch later Share Share 0:00 0:00 / / 0:29 0:29 youtu.be/z06fB5WRLyE OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 47 / 60
  • 54. USE VARIABLES Add to inventory 1 Calculate the password hash 2 register variable 3 Use stdout (output of hash command) for password hash ... [installationmanager:vars] was_user=wassys was_user_password=password - name: hash user password shell: "python -c "import crypt; print crypt.crypt('{{ was_user_password }}')"" register: was_user_password_hash changed_when: false - name: add user for im and websphere (non_root) user: name: "{{ was_user }}" comment: WebSphere user uid: 2000 state: present update_password: on_create password: "{{ was_user_password_hash.stdout }}" 1 2 3 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 48 / 60
  • 55. Ansible Workshop - step10 Ansible Workshop - step10 Watch later Watch later Share Share 0:00 0:00 / / 0:27 0:27 youtu.be/GPxHlQuU7N8 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 49 / 60
  • 56. CREATE SEPARATE ROLES playbook.yml 1 put into roles/ansible-demo2/tasks/main.yml 2 put into roles/ansible-demo2/handlers/main.yml - hosts: websphere_servers become: yes become_user: root tasks: - name: ensure selinux is set to permissive selinux: policy: targeted state: permissive notify: reboot ... handlers: - name: reboot reboot: msg: "Reboot initiated from Ansible" connect_timeout: 30 reboot_timeout: 120 test_command: whoami 1 2 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 50 / 60
  • 57. VARIABLES DEFAULTS Add a folder defaults to the role Add used variables and their defaults So even when you forget to de ne the variable, the role will run ansible_demo2/defaults/main.yaml 1 add a variable and read the value from variable was_user, if not present use default wassys 2 default password __websphere_user: "{{ was_user | default('wassys') }}" __websphere_user_password: "{{ was_user_password | default('password') }}" 1 2 OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 51 / 60
  • 58. Ansible Workshop - step11 Ansible Workshop - step11 Watch later Watch later Share Share 0:00 0:00 / / 0:21 0:21 youtu.be/Yca0gHKOkxI OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 52 / 60
  • 59. USE ANSIBLE VAULT TO SECURE THE PASSWORD move the variables to group_vars/installationmanager.yml passwords to group_vars/all.yaml encrypt all.yml ansible-vault encrypt group_vars/all.yml ansible-playbook -i inventory playbook.yml --ask-vault-pass OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 53 / 60
  • 60. Ansible Workshop - step12 Ansible Workshop - step12 Watch later Watch later Share Share 0:00 0:00 / / 0:34 0:34 youtu.be/Ktyy3MKeoRQ OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 54 / 60
  • 61. RUN ANSIBLE PLAYBOOK Manually through your shell Ansible Tower (enterprise server, $$$) On Windows use Windows Subsystem for Linux (WSL) Ansible AWX Jenkins (Pipeline) Directly during provisioning of Vagrant and Terraform github.com/ansible/awx OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 55 / 60
  • 62. WHERE TO FIND ROLES? Simple said: Download or write them Check Download role ansible-playbook install โ€ฆ roles and collections make Ansible modular Download complete repositories like connections-automation galaxy.ansible.com OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 56 / 60
  • 63. SECURITY How do we store passwords or deployment keys Ansible Vault AES265 encrypted Encrypted during ansible-playbook run Ansible AWX Allow users to run tasks and playbooks against hosts without having a root or user account on it OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 57 / 60
  • 64. WHERE TO START (LINKS) Documentation Books Jeff Geerling: Ansible for Devops Youtube docs.ansible.com/intro_getting_started.html github.com/orgs/ansible/people Ansible 101 with Jeff Geerling Build and deploy container images and containers OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 58 / 60
  • 65. ADMINISTRATOR OR DEVELOPER Have a look at Ansible Saves you a ton of time Easy to deploy Easy to deploy different environments Dev QA Test Production KISS OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 59 / 60
  • 66. CONNECTIONS CUSTOMERS Have a look at github.com/HCL-TECH-SOFTWARE/connections-automation OpenNTF Webinar This work is licensed under a Christoph Stoettner ยท @stoeps Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 60 / 60
  • 67. QUESTIONS? Use the GoToWebinar Questions Pane Please keep all questions related to the topics that our speakers are discussing!!! Unrelated Question => post at: http://openntf.slack.com/