SlideShare a Scribd company logo
1 of 45
https://lynt.cz
Ing. Vladimir Smitka
vladimir.smitka@lynt.cz
@smitka
Lynt services s.r.o.
6. 12. 2017 1
https://lynt.cz
Intro
• Manual -> Script -> Infrastructure automatization
• Easy
• Procedural
• Idempotent
• Push
• Agent-less
• Batteries included
6. 12. 2017 2
No OS abstraction (e.g. Packages)
No good noop
https://lynt.cz
Platforms
• Linux/Mac/BSD – SSH + Python
• Windows – PowerShell
• SSH raw mode:
– Cisco IOS/ASA
– Juniper Junos
– VyOS
– Any SSH enabled node
• Mikrotik – unofficial/experimental via API
6. 12. 2017 3
https://lynt.cz
Content
• http://edu.lynt.cz/course/ansible
6. 12. 2017 4
• Inventory
• Patterns
• Tasks
• Playbooks
• Lookups
• Modules
• Jinja
• Handlers
• Roles
• Variables
• Facts
• Vault
• Galaxy
• Troubleshooting
• Performance
• Strategies
https://lynt.cz
Lab
6. 12. 2017 5
https://lynt.cz
Versions
• https://github.com/ansible/ansible/blob/devel/CHANGELOG.md
• …
• 1.9
• …
• 2.2 – Python 3 (3.5+), Stretch
• 2.3 – dest->path (backward compatible)
• 2.4 – Centos 7 (Centos 6 - Epel)
• deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
6. 12. 2017 6
https://lynt.cz
Installation
• apt install ansible
• alias apl="ansible-playbook"
6. 12. 2017 7
https://lynt.cz
Inventory
• /etc/ansible/hosts
• ansible --list-hosts all
• Localhost: ansible ansible_connection=local
• ansible -m ping all
• ansible -m command -a "uptime" all
• ansible -a "uptime" all
6. 12. 2017 8
Default module
INI, YAML
https://lynt.cz
Groups
[apps]
192.168.1.115
hostname
[mgmt]
ansible ansible_connection=local
6. 12. 2017 9
https://lynt.cz
Local Inventory
• …./work_dir/hosts
• ansible -i hosts --list-hosts all
• (-i <dir> - "inventory" file lookup)
• Config overloading:
– ENV ANSIBLE_CONFIG
– ./ansible.cfg
– ~/.ansible.cfg
6. 12. 2017 10
[defaults]
inventory = ./hosts
group_vars
host_vars
https://lynt.cz
Patterns
• http://docs.ansible.com/ansible/latest/intro_
patterns.html
• ansible --list-hosts all
• ansible --list-hosts *
• ansible --list-hosts 192*
• ansible --list-hosts ansible
• ansible --list-hosts 'all,!ansible'
6. 12. 2017 11
https://lynt.cz
Dynamic inventory
Script output:
{
"app": {
"hosts": [
"192.168.1.115"
]
},
"mgmt": [
"ansible"
],
"_meta": {
"hostvars": {
"ansible": {
"ansible_connection": "local"
}
}
}
}
6. 12. 2017 12
https://lynt.cz
Tasks
• Base building blocks
• ansible –m module –a mod_arguments hosts
• ansible –m command –a uptime all
• Options
-f 5 / --forks=5 - FORKS, parallel runs
-b / --become – privileged mode (su, sudo)
-l / --limit – subset of hosts
6. 12. 2017 13
https://lynt.cz
Modules
• http://docs.ansible.com/ansible/latest/modules_
by_category.html
• Commands – command, shell, raw, …
• Packing – yum, apt, pip,…
• System – service, cron, iptables, authorized_keys
…
• Cloud – various cloud providers
• Files – various files operations
• Utilities – playlist logic helpers
6. 12. 2017 14
https://lynt.cz
Playbooks
• tasks YAML format
---
- hosts: all
tasks:
- command: uptime
https://gist.github.com/lynt-
smitka/6d915fd1deff917ac2bf2c45ceb39c82
http://docs.ansible.com/ansible/latest/common_return_values.html
6. 12. 2017 15
https://lynt.cz
Add SSH key
---
- hosts: new
tasks:
- name: Add SSH key
authorized_key:
user: root
state: present
key: "{{lookup('file', '~/.ssh/id_rsa.pub') }}"
• apl sshkey.yml --ask-pass -u user --become --become-method=su --
ask-become-pass --ssh-common-args='-o
StrictHostKeyChecking=no'
6. 12. 2017 16
https://lynt.cz
Lookups
• http://docs.ansible.com/ansible/latest/playbo
oks_lookups.html
• File
• Password
6. 12. 2017 17
https://lynt.cz
Inventory arguments
[new]
192.168.1.117
192.168.1.118
192.168.1.119
[new:vars]
ansible_user=user
ansible_become=yes
ansible_become_method=su
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
6. 12. 2017 18
https://lynt.cz
APT
---
- hosts: all
tasks:
- name: install package
apt:name=mc state=present
update_cache=yes
6. 12. 2017 19
https://lynt.cz
APT multiple packages
---
- hosts: all
tasks:
- name: install packages
apt:name=mc,curl
state=present update_cache=yes
6. 12. 2017 20
https://lynt.cz
APT multiple packages – yaml syntax
---
- hosts: all
tasks:
- name: install packages
apt:
name: mc,curl
state: present
update_cache: yes
6. 12. 2017 21
https://lynt.cz
APT multiple packages - loop
---
- hosts: all
tasks:
- name: install packages
apt: name={{item}} state=present update_cache=yes
with_items:
- mc
- curl
- vim
- git
http://docs.ansible.com/ansible/latest/playbooks_loops.html
6. 12. 2017 22
https://lynt.cz
Files operations
• http://docs.ansible.com/ansible/latest/list_of_fil
es_modules.html
• Copy
• File
• LineInFile/BlockInFile
• Ini_file
• Replace
• Template
6. 12. 2017 23
https://lynt.cz
File module
• http://docs.ansible.com/ansible/latest/file_m
odule.html
• Set owner, mode
• Create dir (whole path), symlink, hardlink
• Touch file (state=touch)
• Remove file (state=absent)
6. 12. 2017 24
https://lynt.cz
Copy module
• http://docs.ansible.com/ansible/latest/copy_mo
dule.html
- copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
backup: yes
• content/src
• force
6. 12. 2017 25
https://lynt.cz
Copy content
- copy:
dest: /etc/hosts
backup: yes
content: |
127.0.0.1 localhost
192.168.1.115 ansible
6. 12. 2017 26
https://lynt.cz
LineInFile module
http://docs.ansible.com/ansible/latest/lineinfile_module.html
- lineinfile:
dest: /etc/hosts
line: '8.8.8.8 dns'
- lineinfile:
dest: /etc/nginx/nginx.conf
regexp: '^user '
line: 'user www-data;'
* last instance
6. 12. 2017 27
https://lynt.cz
Replace module
- replace:
dest: /etc/nginx/web.conf
regexp: old.domain'
replace: 'new.domain'
backup: yes
* All instances
6. 12. 2017 28
https://lynt.cz
BlockInFile module
http://docs.ansible.com/ansible/latest/blockinfile_
module.html
- blockinfile:
dest: /etc/ssh/sshd_config
block: |
…
# BEGIN ANSIBLE MANAGED BLOCK
…
# END ANSIBLE MANAGED BLOCK
6. 12. 2017 29
https://lynt.cz
IniFile module
http://docs.ansible.com/ansible/latest/ini_file_
module.html
- ini_file:
dest="/etc/php/7.0/fpm/php.ini"
section="Date"
option="date.timezone"
value="Europe/Prague"
6. 12. 2017 30
https://lynt.cz
Template module
http://docs.ansible.com/ansible/latest/template
_module.html
- template:
src=nginx.conf.j2
dest=/etc/nginx/nginx.conf
6. 12. 2017 31
https://lynt.cz
Jinja Templates
• http://jinja.pocoo.org/docs/2.10/templates
• Variables
{{ ansible_distribution }}
• Filters
{{ ansible_distribution|capitalize }}
• Loops
{% for item in groups.app %}
server {{ item }};
{% endfor %}
• Conditionals + tests
6. 12. 2017 32
https://lynt.cz
Jinja Conditionals + tests
{% if variable is defined %}
value of variable: {{ variable }}
{% else %}
variable is not defined
{% endif %}
6. 12. 2017 33
https://lynt.cz
Handlers
tasks:
- name: config nginx
template: src=nginx.conf.j2
dest=/etc/nginx/nginx.conf
notify:
- restart nginx
handlers:
- name: restart nginx
service: name=nginx state=restarted
6. 12. 2017 34
https://lynt.cz
Roles
• ansible-galaxy init <role-name>
test-role/
├── defaults
│ └── main.yml
├── files
│ └── file.txt
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
│ └── template.j2
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
6. 12. 2017 35
https://lynt.cz
Variables
• http://docs.ansible.com/ansible/latest/playbo
oks_variables.html#variable-precedence-
where-should-i-put-a-variable
• apl x.yml --extra-vars "…"
• roles:
- { role: mysql, db_name: demo }
• group_vars folder
• host_vars folder
6. 12. 2017 36
https://lynt.cz
Facts
• ansible –m setup all
• /etc/ansible/facts.d/*.fact
- name: Upload simple fact
copy:
content: "1"
dest: /etc/ansible/facts.d/test.fact
6. 12. 2017 37
https://lynt.cz
Facts
• ansible –m setup all
…
"ansible_local": {
"one": 1
}
…
6. 12. 2017 38
https://lynt.cz
Dynamic facts
• chmod +x ;-)
• Json output
#!/bin/bash
curl --silent --connect-timeout 1 ifconfig.co/json
6. 12. 2017 39
https://lynt.cz
Vault
• ansible-vault create vault.file
• ansible-vault edit vault.file
• apl stack-init.yml --ask-vault-pass
[default]
vault_password:file = ~/.vaultpass
6. 12. 2017 40
https://lynt.cz
Vault example
---
- pass: 'secret'
cat vault.file
$ANSIBLE_VAULT;1.1;AES256
326564303339633037383163333836653564633339313130306632323635313336353
36637373162…
---
- hosts: mgmt
vars_files:
- 'vault.file'
tasks:
- debug:
msg: '{{pass}}'
6. 12. 2017 41
https://lynt.cz
Galaxy
• https://galaxy.ansible.com/
• ansible-galaxy install username.role_name
• ansible-galaxy install -p roles -r requirements.yml
requirements.yml:
# from galaxy
- src: yatesr.timezone
# from GitHub
- src: https://github.com/bennojoy/nginx
6. 12. 2017 42
https://lynt.cz
Performance
• gather_facts: false
- hosts: all
become: true
gather_facts: false
tasks:
- name: update apt cache
apt: update_cache=yes cache_valid_time=86400
[ssh_connection]
Pipelining = True
6. 12. 2017 43
https://lynt.cz
Ansible-pull
• https://github.com/ansible/ansible-
examples/blob/master/language_features/ans
ible_pull.yml
6. 12. 2017 44
https://lynt.cz
Discussion
• Strategies
• Troubleshooting
6. 12. 2017 45

More Related Content

What's hot

Tips for a Faster Website
Tips for a Faster WebsiteTips for a Faster Website
Tips for a Faster Website
Rayed Alrashed
 

What's hot (20)

Automation with ansible
Automation with ansibleAutomation with ansible
Automation with ansible
 
Ansible Introduction - Ansible Brno #1 - David Karban
Ansible Introduction - Ansible Brno #1 - David KarbanAnsible Introduction - Ansible Brno #1 - David Karban
Ansible Introduction - Ansible Brno #1 - David Karban
 
Tips for a Faster Website
Tips for a Faster WebsiteTips for a Faster Website
Tips for a Faster Website
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Ansible 101 - Presentation at Ansible STL Meetup
Ansible 101 - Presentation at Ansible STL MeetupAnsible 101 - Presentation at Ansible STL Meetup
Ansible 101 - Presentation at Ansible STL Meetup
 
Getting Started with Ansible
Getting Started with AnsibleGetting Started with Ansible
Getting Started with Ansible
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansible
 
How Ansible Makes Automation Easy
How Ansible Makes Automation EasyHow Ansible Makes Automation Easy
How Ansible Makes Automation Easy
 
Ansible v2 and Beyond (Ansible Hawai'i Meetup)
Ansible v2 and Beyond (Ansible Hawai'i Meetup)Ansible v2 and Beyond (Ansible Hawai'i Meetup)
Ansible v2 and Beyond (Ansible Hawai'i Meetup)
 
Getting started with Ansible
Getting started with AnsibleGetting started with Ansible
Getting started with Ansible
 
Ansible intro
Ansible introAnsible intro
Ansible intro
 
Ansible Case Studies
Ansible Case StudiesAnsible Case Studies
Ansible Case Studies
 
Deploying PHP Applications with Ansible
Deploying PHP Applications with AnsibleDeploying PHP Applications with Ansible
Deploying PHP Applications with Ansible
 
Automation with Ansible and Containers
Automation with Ansible and ContainersAutomation with Ansible and Containers
Automation with Ansible and Containers
 
Jenkins and ansible reference
Jenkins and ansible referenceJenkins and ansible reference
Jenkins and ansible reference
 
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
Ansible Automation Best Practices From Startups to Enterprises - Minnebar 12
Ansible Automation Best Practices From Startups to Enterprises - Minnebar 12Ansible Automation Best Practices From Startups to Enterprises - Minnebar 12
Ansible Automation Best Practices From Startups to Enterprises - Minnebar 12
 
Chef Provisioning a Chef Server Cluster - ChefConf 2015
Chef Provisioning a Chef Server Cluster - ChefConf 2015Chef Provisioning a Chef Server Cluster - ChefConf 2015
Chef Provisioning a Chef Server Cluster - ChefConf 2015
 

Similar to Ansible

Sydney Drupal News May 2012
Sydney Drupal News May 2012Sydney Drupal News May 2012
Sydney Drupal News May 2012
Ryan Cross
 

Similar to Ansible (20)

Container Monitoring with Sysdig
Container Monitoring with SysdigContainer Monitoring with Sysdig
Container Monitoring with Sysdig
 
Automating Complex Setups with Puppet
Automating Complex Setups with PuppetAutomating Complex Setups with Puppet
Automating Complex Setups with Puppet
 
Thrombus Training Dec. 2013
Thrombus Training Dec. 2013Thrombus Training Dec. 2013
Thrombus Training Dec. 2013
 
Sydney Drupal News May 2012
Sydney Drupal News May 2012Sydney Drupal News May 2012
Sydney Drupal News May 2012
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
 
Automating complex infrastructures with Puppet
Automating complex infrastructures with PuppetAutomating complex infrastructures with Puppet
Automating complex infrastructures with Puppet
 
Staying on Topic - Invoke OpenFaaS functions with Kafka
Staying on Topic - Invoke OpenFaaS functions with KafkaStaying on Topic - Invoke OpenFaaS functions with Kafka
Staying on Topic - Invoke OpenFaaS functions with Kafka
 
Apache Performance Tuning: Scaling Up
Apache Performance Tuning: Scaling UpApache Performance Tuning: Scaling Up
Apache Performance Tuning: Scaling Up
 
Cloud Foundry Monitoring How-To: Collecting Metrics and Logs
Cloud Foundry Monitoring How-To: Collecting Metrics and LogsCloud Foundry Monitoring How-To: Collecting Metrics and Logs
Cloud Foundry Monitoring How-To: Collecting Metrics and Logs
 
Intro to HPC
Intro to HPCIntro to HPC
Intro to HPC
 
Provisioning Heterogenous Bare Metal with Stacki
Provisioning Heterogenous Bare Metal with StackiProvisioning Heterogenous Bare Metal with Stacki
Provisioning Heterogenous Bare Metal with Stacki
 
Social Connections 13 - Troubleshooting Connections Pink
Social Connections 13 - Troubleshooting Connections PinkSocial Connections 13 - Troubleshooting Connections Pink
Social Connections 13 - Troubleshooting Connections Pink
 
Cypress.pptx
Cypress.pptxCypress.pptx
Cypress.pptx
 
Icinga Camp Berlin 2018 - Dev and Ops Stories - Integrations++
Icinga Camp Berlin 2018 - Dev and Ops Stories - Integrations++Icinga Camp Berlin 2018 - Dev and Ops Stories - Integrations++
Icinga Camp Berlin 2018 - Dev and Ops Stories - Integrations++
 
OpenStack Deployment with Chef Workshop
OpenStack Deployment with Chef WorkshopOpenStack Deployment with Chef Workshop
OpenStack Deployment with Chef Workshop
 
Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i  Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i
 
Build Automation of PHP Applications
Build Automation of PHP ApplicationsBuild Automation of PHP Applications
Build Automation of PHP Applications
 
Beyond Puppet
Beyond PuppetBeyond Puppet
Beyond Puppet
 
Pure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talkPure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talk
 
Power up Magnolia CMS with OpenShift
Power up Magnolia CMS with OpenShiftPower up Magnolia CMS with OpenShift
Power up Magnolia CMS with OpenShift
 

More from Vladimír Smitka

More from Vladimír Smitka (20)

Google Tag Manager a analytika ve WordPress
Google Tag Manager a analytika ve WordPressGoogle Tag Manager a analytika ve WordPress
Google Tag Manager a analytika ve WordPress
 
WordCamp Bratislava 2019 - Cache!
WordCamp Bratislava 2019 - Cache!WordCamp Bratislava 2019 - Cache!
WordCamp Bratislava 2019 - Cache!
 
Webmeetup #3
Webmeetup #3Webmeetup #3
Webmeetup #3
 
Co ukázal globální scan přístupných .git repozitářů?
Co ukázal globální scan přístupných .git repozitářů?Co ukázal globální scan přístupných .git repozitářů?
Co ukázal globální scan přístupných .git repozitářů?
 
Hesla a vícefaktorová autentizace ve WP
Hesla a vícefaktorová autentizace ve WPHesla a vícefaktorová autentizace ve WP
Hesla a vícefaktorová autentizace ve WP
 
WP Weekend 2018
WP Weekend 2018WP Weekend 2018
WP Weekend 2018
 
Drobné chyby, které vám mohou zlomit vaz
Drobné chyby, které vám mohou zlomit vazDrobné chyby, které vám mohou zlomit vaz
Drobné chyby, které vám mohou zlomit vaz
 
Sysops tipy pro lepší WP
Sysops tipy pro lepší WPSysops tipy pro lepší WP
Sysops tipy pro lepší WP
 
Najčastejšie problémy WordPress webov
Najčastejšie problémy WordPress webovNajčastejšie problémy WordPress webov
Najčastejšie problémy WordPress webov
 
Http/2 vs Image Sprites
Http/2 vs Image SpritesHttp/2 vs Image Sprites
Http/2 vs Image Sprites
 
WordCamp Brno 2017 - rychlý a bezpečný web
WordCamp Brno 2017  - rychlý a bezpečný webWordCamp Brno 2017  - rychlý a bezpečný web
WordCamp Brno 2017 - rychlý a bezpečný web
 
WordPress - základy bezpečnosti
WordPress - základy bezpečnostiWordPress - základy bezpečnosti
WordPress - základy bezpečnosti
 
Nejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webůNejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webů
 
Wordfence 2016
Wordfence 2016Wordfence 2016
Wordfence 2016
 
WordPress Security: Defend yourself against digital invaders
WordPress Security:Defend yourself against digital invadersWordPress Security:Defend yourself against digital invaders
WordPress Security: Defend yourself against digital invaders
 
WordPress: Základy - bezpečnost 3x3
WordPress: Základy - bezpečnost 3x3WordPress: Základy - bezpečnost 3x3
WordPress: Základy - bezpečnost 3x3
 
Instalace WordPress
Instalace WordPressInstalace WordPress
Instalace WordPress
 
WP výkon a jeho profilování
WP výkon a jeho profilováníWP výkon a jeho profilování
WP výkon a jeho profilování
 
WordCamp Praha 2016 - Bezpečnost WordPress
WordCamp Praha 2016 - Bezpečnost WordPressWordCamp Praha 2016 - Bezpečnost WordPress
WordCamp Praha 2016 - Bezpečnost WordPress
 
WordPress performance tuning
WordPress performance tuningWordPress performance tuning
WordPress performance tuning
 

Recently uploaded

Recently uploaded (20)

Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 

Ansible