<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://localhost:8085/index.php?action=history&amp;feed=atom&amp;title=Notes_from_RH_Summit%2FAnsiblefest_2024</id>
	<title>Notes from RH Summit/Ansiblefest 2024 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://localhost:8085/index.php?action=history&amp;feed=atom&amp;title=Notes_from_RH_Summit%2FAnsiblefest_2024"/>
	<link rel="alternate" type="text/html" href="http://localhost:8085/index.php?title=Notes_from_RH_Summit/Ansiblefest_2024&amp;action=history"/>
	<updated>2026-04-22T13:29:28Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://localhost:8085/index.php?title=Notes_from_RH_Summit/Ansiblefest_2024&amp;diff=17&amp;oldid=prev</id>
		<title>Dracula at 14:14, 18 July 2024</title>
		<link rel="alternate" type="text/html" href="http://localhost:8085/index.php?title=Notes_from_RH_Summit/Ansiblefest_2024&amp;diff=17&amp;oldid=prev"/>
		<updated>2024-07-18T14:14:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:14, 18 July 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l99&quot;&gt;Line 99:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 99:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** etc&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** etc&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;gotchas: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;- &lt;/del&gt;rhel 5 still in use (lots of hard-to-update edge devices) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;- &lt;/del&gt;required keeping a copy of Ansible 9.12 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;- &lt;/del&gt;handlers + roles + playbooks behavior was a surprise &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;- &lt;/del&gt;idempotency is hard &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;- &lt;/del&gt;slowly changing customer requests &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;- &lt;/del&gt;disk mounts on existing servers&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;gotchas:  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;rhel 5 still in use (lots of hard-to-update edge devices)  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;required keeping a copy of Ansible 9.12  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;handlers + roles + playbooks behavior was a surprise  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;idempotency is hard  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;slowly changing customer requests  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;disk mounts on existing servers&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;testing: - RHEL upgrades require playbooks to be reviewed + retested - getting other departments required managemnet buy-in - importance of culture of growth - replaced 800 line startup script with playbooks and roles&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;testing: - RHEL upgrades require playbooks to be reviewed + retested - getting other departments required managemnet buy-in - importance of culture of growth - replaced 800 line startup script with playbooks and roles&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-8:rev-17:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Dracula</name></author>
	</entry>
	<entry>
		<id>http://localhost:8085/index.php?title=Notes_from_RH_Summit/Ansiblefest_2024&amp;diff=8&amp;oldid=prev</id>
		<title>Dracula: Created page with &quot;&lt;span id=&quot;reliable-network-compliance-with-ansible-devsecops&quot;&gt;&lt;/span&gt; = Reliable Network Compliance with Ansible DevSecOps =  # user changes template/script # change triggers pipeline # security analysis # build config # apply config # run validation tests # publish artifacts  &lt;span id=&quot;automated-app-remediation-using-eda&quot;&gt;&lt;/span&gt; = Automated App Remediation using EDA =  observe, evaluate, respond  * Monitoring: something happened&lt;br /&gt;  * Observability: why something ha...&quot;</title>
		<link rel="alternate" type="text/html" href="http://localhost:8085/index.php?title=Notes_from_RH_Summit/Ansiblefest_2024&amp;diff=8&amp;oldid=prev"/>
		<updated>2024-05-14T12:16:08Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;span id=&amp;quot;reliable-network-compliance-with-ansible-devsecops&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; = Reliable Network Compliance with Ansible DevSecOps =  # user changes template/script # change triggers pipeline # security analysis # build config # apply config # run validation tests # publish artifacts  &amp;lt;span id=&amp;quot;automated-app-remediation-using-eda&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; = Automated App Remediation using EDA =  observe, evaluate, respond  * Monitoring: something happened&amp;lt;br /&amp;gt;  * Observability: why something ha...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;reliable-network-compliance-with-ansible-devsecops&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Reliable Network Compliance with Ansible DevSecOps =&lt;br /&gt;
&lt;br /&gt;
# user changes template/script&lt;br /&gt;
# change triggers pipeline&lt;br /&gt;
# security analysis&lt;br /&gt;
# build config&lt;br /&gt;
# apply config&lt;br /&gt;
# run validation tests&lt;br /&gt;
# publish artifacts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;automated-app-remediation-using-eda&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Automated App Remediation using EDA =&lt;br /&gt;
&lt;br /&gt;
observe, evaluate, respond&lt;br /&gt;
&lt;br /&gt;
* Monitoring: something happened&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Observability: why something happened&lt;br /&gt;
&lt;br /&gt;
ansible rulebooks - use if-this-then-that rules - continuously running&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ssh-ca-authentication-w-hashicorp-vault-and-rh-aap&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= SSH CA Authentication w/ Hashicorp Vault and RH AAP =&lt;br /&gt;
&lt;br /&gt;
* problem&lt;br /&gt;
** leveraging keys at scale&lt;br /&gt;
** key rotation is difficult&lt;br /&gt;
** mishandling private keys&lt;br /&gt;
* solution&lt;br /&gt;
** using an SSH CA&lt;br /&gt;
*** PKI-like infrastructure&lt;br /&gt;
*** designed for SSH&lt;br /&gt;
* SSH certs are signed with:&lt;br /&gt;
** SSH CA priv key&lt;br /&gt;
** TTL&lt;br /&gt;
** roles&lt;br /&gt;
** other SSH instructions&lt;br /&gt;
* Vault as SSH CA&lt;br /&gt;
* user authenticates to vault before auth’ing to server&lt;br /&gt;
* Vault integrates with AAP&lt;br /&gt;
** secrets lookup&lt;br /&gt;
** signed SSH&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;security-as-code-and-firewall-policy-automation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Security-as-Code and Firewall Policy Automation =&lt;br /&gt;
&lt;br /&gt;
* aims to add visibility&lt;br /&gt;
* move from spreadsheets to data structures&lt;br /&gt;
** direct translation to policy&lt;br /&gt;
* implmenetation + backout&lt;br /&gt;
* using servicenow + github + AAP&lt;br /&gt;
* request form + approve + implement&lt;br /&gt;
&lt;br /&gt;
process: 1. discuss the design 2. create automation diagram 3. write individual playbooks&lt;br /&gt;
&lt;br /&gt;
building automation: 1. write steps as playbook comments 2. replace comments with code&lt;br /&gt;
&lt;br /&gt;
* use “set_facts” to label the current stage for debugging&lt;br /&gt;
* use “set_stats”&lt;br /&gt;
* use failure handling&lt;br /&gt;
* modular design&lt;br /&gt;
* custom python modules&lt;br /&gt;
* firewall config caching&lt;br /&gt;
* compliance enforcement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;good-practices-for-ansible&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Good Practices for Ansible =&lt;br /&gt;
&lt;br /&gt;
* used in lint validated content&lt;br /&gt;
&lt;br /&gt;
examples: - make big items out of smaller items - use “foo_package” instead of “package” - use snake case for vars - use two underscores for internal variables - use a single source of truth for inventory - filter at source, not inventory (so use API to filter) - treat inventory in controller as disposable - define inventory as dir structure instead of a single file - make script to gen inventory dynamically - split long lines into multiple lines - yaml-multiline.info&lt;br /&gt;
&lt;br /&gt;
call to action: - read the GPA - apply and share - contribute to improve GPA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ansible-journey-at-norfolk-southern&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Ansible Journey at Norfolk Southern =&lt;br /&gt;
&lt;br /&gt;
* major rail company&lt;br /&gt;
* previously using bash + puppet + chef&lt;br /&gt;
* management wanted to improve automation skills&lt;br /&gt;
** made sure the team had the required time (1hr/wk_&lt;br /&gt;
* went through Ansible for DevOps&lt;br /&gt;
* learngitbranching.js.org&lt;br /&gt;
* learn to give/accept code review&lt;br /&gt;
* quality merges&lt;br /&gt;
* start developing standards&lt;br /&gt;
** naming conventions&lt;br /&gt;
** created internal docs&lt;br /&gt;
*** used for code reviews&lt;br /&gt;
* used mailing list support&lt;br /&gt;
* encouraged attending Ansible meetups&lt;br /&gt;
** useful to prove skills are transferrable&lt;br /&gt;
* create detailed inventories w/ tagging&lt;br /&gt;
** DC&lt;br /&gt;
** dev/prod&lt;br /&gt;
** hardware&lt;br /&gt;
** DR priority&lt;br /&gt;
** etc&lt;br /&gt;
&lt;br /&gt;
gotchas: - rhel 5 still in use (lots of hard-to-update edge devices) - required keeping a copy of Ansible 9.12 - handlers + roles + playbooks behavior was a surprise - idempotency is hard - slowly changing customer requests - disk mounts on existing servers&lt;br /&gt;
&lt;br /&gt;
testing: - RHEL upgrades require playbooks to be reviewed + retested - getting other departments required managemnet buy-in - importance of culture of growth - replaced 800 line startup script with playbooks and roles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ansible-keynote&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Ansible Keynote =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;southwest-airlines&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== southwest airlines ==&lt;br /&gt;
&lt;br /&gt;
* ansible allows shorter maintenance windows&lt;br /&gt;
** SWA does not perform maintenances while planes are in the sky&lt;br /&gt;
* side note: presentation was very scripted. “&amp;#039;&amp;#039;video of looking at SWA website for a flight&amp;#039;&amp;#039; Oh, didn’t realize you could see my screen”&lt;br /&gt;
* using ansible to create golden configs for network devices&lt;br /&gt;
* custom NOC solution using ansible?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;jp-morgan-chase&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== jp morgan chase ==&lt;br /&gt;
&lt;br /&gt;
* 10k unique playbooks&lt;br /&gt;
* secured, controlled, auditable&lt;br /&gt;
* post-conference note: pretty sure they said they have ~65M executions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;podman-desktop&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Podman Desktop =&lt;br /&gt;
&lt;br /&gt;
* supports k8s and OS bases&lt;br /&gt;
* support for compose and pods&lt;br /&gt;
* “kind” app as opposed to k8s or docker?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;rhel-satellite-advanced-topics&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= RHEL Satellite Advanced Topics =&lt;br /&gt;
&lt;br /&gt;
* using ansible to&lt;br /&gt;
** enable RH repos&lt;br /&gt;
** add custom repos&lt;br /&gt;
** create activation keys&lt;/div&gt;</summary>
		<author><name>Dracula</name></author>
	</entry>
</feed>