<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kirill Satarin</title><link>/</link><description>Kirill Satarin</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 16 Jul 2099 00:00:00 +0000</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml"/><item><title>ARA Ansible for the Team (Boston)</title><link>/talks/2025/ara-ansible-boston/</link><pubDate>Fri, 19 Sep 2025 00:00:00 +0000</pubDate><guid>/talks/2025/ara-ansible-boston/</guid><description>&lt;h2 id="abstract" >
&lt;div>
&lt;a href="#abstract">
#
&lt;/a>
Abstract
&lt;/div>
&lt;/h2>
&lt;p>ARA is a powerful development tool that revolutionizes how teams understand, troubleshoot, and debug Ansible content. By providing
detailed execution records and intuitive visualizations, ARA transforms complex playbook runs into actionable insights, significantly
reducing development time and improving collaboration.&lt;/p>
&lt;p>This session will demonstrate:&lt;/p>
&lt;p>• ARA fundamentals - Architecture, core features, and how it captures Ansible execution data
• Environment setup - Quick installation and configuration for local and team environments
• Team collaboration - Sharing execution reports, comparing runs, and maintaining playbook documentation&lt;/p>
&lt;p>Target audience: Ansible developers, DevOps engineers, and infrastructure teams looking to enhance their automation workflows. No prior
ARA experience required - examples will progress from basic concepts to advanced use cases.&lt;/p>
&lt;p>Key takeaways: Attendees will leave with practical knowledge to implement ARA in their environments and measurably improve their Ansible
development process.&lt;/p>
&lt;h2 id="slide-deck" >
&lt;div>
&lt;a href="#slide-deck">
#
&lt;/a>
Slide Deck
&lt;/div>
&lt;/h2>
&lt;p>&lt;a href="https://speakerdeck.com/kksat/ara-ansible-for-the-teams-devconf-dot-us-boston-2025">ARA Ansible for the teams&lt;/a>&lt;/p>
&lt;html>
&lt;iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/5e88fe66a2424c429f3963307a2932d3" title="ARA Ansible for the Team" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777">&lt;/iframe>
&lt;/html>
&lt;h2 id="video" >
&lt;div>
&lt;a href="#video">
#
&lt;/a>
Video
&lt;/div>
&lt;/h2>
&lt;div id="player">&lt;/div>
&lt;script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
youtube_player = new YT.Player('player', {
height: '390',
width: '100%',
videoId: 'nwvLkP359Cc',
playerVars: {
'playsinline': 1
},
});
}
function timeToSeconds(time) {
const [minutes, seconds] = time.split(':').map(Number);
return (minutes * 60) + seconds;
}
function time(time) {
youtube_player.seekTo(timeToSeconds(time))
}
&lt;/script>
&lt;h3 id="conference-page" >
&lt;div>
&lt;a href="#conference-page">
##
&lt;/a>
Conference page
&lt;/div>
&lt;/h3>
&lt;p>&lt;a href="https://pretalx.devconf.info/devconf-us-2025/talk/88AVFL/">https://pretalx.devconf.info/devconf-us-2025/talk/88AVFL/&lt;/a>&lt;/p></description></item><item><title>ARA Ansible for the team</title><link>/talks/2025/ara-ansible/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><guid>/talks/2025/ara-ansible/</guid><description>&lt;h2 id="abstract" >
&lt;div>
&lt;a href="#abstract">
#
&lt;/a>
Abstract
&lt;/div>
&lt;/h2>
&lt;p>ARA (ARA Records Ansible) is an Ansible development tool that makes it much easier to understand, troubleshoot and debug Ansible content during development process. This tool can also help you to collaborate with your team members on Ansible content development.&lt;/p>
&lt;p>This talk will cover the following topics:&lt;/p>
&lt;ul>
&lt;li>What is ARA and how it works&lt;/li>
&lt;li>How to set up ARA in your environment&lt;/li>
&lt;li>How to use ARA to understand, troubleshoot and debug Ansible content&lt;/li>
&lt;li>How to use ARA to collaborate with your team members on Ansible content development&lt;/li>
&lt;li>How to integrate ARA into your CI/CD pipeline&lt;/li>
&lt;li>How to use ARA to track changes in your Ansible content&lt;/li>
&lt;/ul>
&lt;p>This talk is designed for Ansible content developers of all levels. Whether you are a seasoned expert or just starting with Ansible.&lt;/p>
&lt;h2 id="slide-deck" >
&lt;div>
&lt;a href="#slide-deck">
#
&lt;/a>
Slide Deck
&lt;/div>
&lt;/h2>
&lt;p>&lt;a href="https://speakerdeck.com/kksat/ara-ansible-for-the-teams">ARA Ansible for the teams&lt;/a>&lt;/p>
&lt;html>
&lt;iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/3b26f2ff89ce4b76b3a8fc042eef9905" title="ARA Ansible for the teams" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777">&lt;/iframe>
&lt;/html>
&lt;h2 id="video" >
&lt;div>
&lt;a href="#video">
#
&lt;/a>
Video
&lt;/div>
&lt;/h2>
&lt;div id="player">&lt;/div>
&lt;script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
youtube_player = new YT.Player('player', {
height: '390',
width: '100%',
videoId: 'YckbC2xzjyU',
playerVars: {
'playsinline': 1
},
});
}
function timeToSeconds(time) {
const [minutes, seconds] = time.split(':').map(Number);
return (minutes * 60) + seconds;
}
function time(time) {
youtube_player.seekTo(timeToSeconds(time))
}
&lt;/script>
&lt;h3 id="conference-page" >
&lt;div>
&lt;a href="#conference-page">
##
&lt;/a>
Conference page
&lt;/div>
&lt;/h3>
&lt;p>&lt;a href="https://cfp.cfgmgmtcamp.org/ghent2025/talk/S9ZRBD/">https://cfp.cfgmgmtcamp.org/ghent2025/talk/S9ZRBD/&lt;/a>&lt;/p></description></item><item><title>Functional programming design patterns in Ansible code</title><link>/talks/2025/functional-ansible/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><guid>/talks/2025/functional-ansible/</guid><description>&lt;h2 id="abstract" >
&lt;div>
&lt;a href="#abstract">
#
&lt;/a>
Abstract
&lt;/div>
&lt;/h2>
&lt;p>Ansible yaml code is easy to write but hard to understand and reason about, hard to maintain, debug and test.&lt;/p>
&lt;p>All of this until you take a functional programming perspective look at an Ansible code. Concepts from functional programming like pure functions, effects, composition, lazy evaluations and others are very much applicable and very useful in Ansible.Allow me to show you how concepts from functional programming can help you simplify Ansible content development, make your Ansible content bullet proof tested, easy to maintain, understand and reuse.&lt;/p>
&lt;p>This talk does not require any prior knowledge of functional programming. It is designed to be useful to both beginners and experienced Ansible content developers.&lt;/p>
&lt;p>Ansible&amp;rsquo;s YAML syntax makes writing automation straightforward — but as projects grow, maintaining large playbooks and roles becomes a real challenge. In this session, Kirill Satarin proposed a powerful solution: borrowing functional programming (FP) principles to improve Ansible code quality.
Attendees learned how adopting functional patterns like pure functions, clear separation of effects, immutability, composition, and lazy evaluation can make Ansible automation far easier to test, debug, understand, and extend. These ideas were made accessible even to those without prior FP experience, with real-world Ansible examples illustrating each principle.
What is covered in the talk:
Why complex Ansible codebases become difficult to manage
Introduction to functional programming concepts relevant to Ansible
Practical techniques to apply FP principles in roles, playbooks, and modules
Strategies for improving testability, modularity, and maintenance
How beginners and experienced developers alike can benefit from FP patterns
By adopting a functional mindset, attendees were shown a clear path to more reliable and resilient automation content.&lt;/p>
&lt;h2 id="slide-deck" >
&lt;div>
&lt;a href="#slide-deck">
#
&lt;/a>
Slide Deck
&lt;/div>
&lt;/h2>
&lt;p>&lt;a href="https://speakerdeck.com/kksat/functional-programming-design-patterns-in-ansible-code">Functional programming design patterns in ansible code&lt;/a>&lt;/p>
&lt;html>
&lt;iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/56fdb4d24c564b0db1e98c1a58b7a1b1" title="Functional programming design patterns in Ansible code" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777">&lt;/iframe>
&lt;/html>
&lt;h2 id="code-samples" >
&lt;div>
&lt;a href="#code-samples">
#
&lt;/a>
Code samples
&lt;/div>
&lt;/h2>
&lt;p>Code examples for the talk given by Kirill Satarin at CfgMgmtCamp 2025&lt;/p>
&lt;p>&lt;a href="https://github.com/kksat/functional-ansible">https://github.com/kksat/functional-ansible&lt;/a>&lt;/p>
&lt;h2 id="video" >
&lt;div>
&lt;a href="#video">
#
&lt;/a>
Video
&lt;/div>
&lt;/h2>
&lt;p>Will be provided as soon as it is available.&lt;/p>
&lt;!---->
&lt;!-- &lt;div id="player">&lt;/div>
&lt;script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
youtube_player = new YT.Player('player', {
height: '390',
width: '100%',
videoId: '',
playerVars: {
'playsinline': 1
},
});
}
function timeToSeconds(time) {
const [minutes, seconds] = time.split(':').map(Number);
return (minutes * 60) + seconds;
}
function time(time) {
youtube_player.seekTo(timeToSeconds(time))
}
&lt;/script>
-->
&lt;h3 id="conference-page" >
&lt;div>
&lt;a href="#conference-page">
##
&lt;/a>
Conference page
&lt;/div>
&lt;/h3>
&lt;p>&lt;a href="https://cfp.cfgmgmtcamp.org/ghent2025/talk/NVGQ39/">https://cfp.cfgmgmtcamp.org/ghent2025/talk/NVGQ39/&lt;/a>&lt;/p></description></item><item><title>Enhancing Ansible Development with SOLID Principles</title><link>/talks/2024/solid-ansible/</link><pubDate>Sat, 15 Jun 2024 10:15:00 +0200</pubDate><guid>/talks/2024/solid-ansible/</guid><description>&lt;h2 id="abstract" >
&lt;div>
&lt;a href="#abstract">
#
&lt;/a>
Abstract
&lt;/div>
&lt;/h2>
&lt;p>Discover how the fundamental principles of SOLID—Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion—can significantly elevate your Ansible role and playbook development. Join us for a session that delves into the practical application of SOLID principles within the realm of Ansible content creation.&lt;/p>
&lt;p>Through insightful examples drawn from real-world experiences, this presentation will illuminate the precise moments and methods for applying SOLID principles to enhance Ansible content. Attendees will glean actionable strategies for efficiently refining their Ansible content by applying these principles.&lt;/p>
&lt;p>Geared towards both seasoned Ansible practitioners and newcomers, this session will feature accessible, yet impactful examples that transcend expertise levels. Whether you&amp;rsquo;re seeking quick ways to improve your Ansible content or aiming to optimize your development workflow, this presentation promises practical insights and actionable takeaways.&lt;/p>
&lt;p>Target Audience: Individuals interested in optimizing their Ansible content development process, whether they possess familiarity or are new to Ansible. The presentation will offer generic examples that cater to a diverse audience, requiring no expert-level knowledge of Ansible.&lt;/p>
&lt;h2 id="slide-deck" >
&lt;div>
&lt;a href="#slide-deck">
#
&lt;/a>
Slide Deck
&lt;/div>
&lt;/h2>
&lt;p>&lt;a href="https://speakerdeck.com/kksat/enhancing-ansible-development-with-solid-principles">Enhancing Ansible Development with SOLID Principles&lt;/a>&lt;/p>
&lt;html>
&lt;iframe
class="speakerdeck-iframe"
frameborder="0"
src="https://speakerdeck.com/player/18118db09f2e4b68bc58421767bd789a"
title="Enhancing Ansible Development with SOLID Principles"
allowfullscreen="true"
style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;"
data-ratio="1.7777777777777777">
&lt;/iframe>
&lt;/html>
&lt;h2 id="code-samples" >
&lt;div>
&lt;a href="#code-samples">
#
&lt;/a>
Code samples
&lt;/div>
&lt;/h2>
&lt;p>Code examples for the talk given by Kirill Satarin at DevConf 2024.&lt;/p>
&lt;p>&lt;a href="https://github.com/kksat/SOLID-Ansible">https://github.com/kksat/SOLID-Ansible&lt;/a>&lt;/p>
&lt;h2 id="video" >
&lt;div>
&lt;a href="#video">
#
&lt;/a>
Video
&lt;/div>
&lt;/h2>
&lt;div id="player">&lt;/div>
&lt;script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
youtube_player = new YT.Player('player', {
height: '390',
width: '100%',
videoId: 'hA_BdkL4Wu4',
playerVars: {
'playsinline': 1
},
});
}
function timeToSeconds(time) {
const [minutes, seconds] = time.split(':').map(Number);
return (minutes * 60) + seconds;
}
function time(time) {
youtube_player.seekTo(timeToSeconds(time))
}
&lt;/script>
&lt;p>&lt;ytbutton onclick="time('01:10')">01:10 Why?&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('06:56')">06:56 Single responsibility principle&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('11:25')">11:25 Open close principle&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('15:48')">15:48 Liskov substitution principle&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('18:38')">18:38 Interface segregation principle&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('23:15')">23:15 Dependency inversion principle&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('26:53')">26:53 SOLID principles for Ansible&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('27:53')">27:53 References&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('28:16')">28:16 Contacts&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('29:09')">29:09 Question 1&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('31:32')">31:32 Question 2&lt;/ytbutton>&lt;/p>
&lt;h3 id="conference-page" >
&lt;div>
&lt;a href="#conference-page">
##
&lt;/a>
Conference page
&lt;/div>
&lt;/h3>
&lt;p>&lt;a href="https://pretalx.com/devconf-cz-2024/talk/HUWMAX/">https://pretalx.com/devconf-cz-2024/talk/HUWMAX/&lt;/a>&lt;/p></description></item><item><title>Ansible Molecule for DevOps</title><link>/talks/2023/ansible-molecule-for-devops/</link><pubDate>Sat, 17 Jun 2023 09:50:00 +0200</pubDate><guid>/talks/2023/ansible-molecule-for-devops/</guid><description>&lt;h2 id="abstract" >
&lt;div>
&lt;a href="#abstract">
#
&lt;/a>
Abstract
&lt;/div>
&lt;/h2>
&lt;p>In this lightning talk I will present Ansible Molecule driver that allows
quickly provision infrastructure on major cloud providers from YAML file.
Created landscape may include disks, shared storage, networks, all in different regions.
Additional operations on provisioned landscape are possible - backup, restore, deallocation, allocation.
Author will share how he and team used Ansible Molecule to test complex Ansible role in DevOps manner.
Expected that participants are interested in quick and easy ways to provision compute infrastructure
on major cloud providers and will be using presented tools after.&lt;/p>
&lt;h2 id="slide-deck" >
&lt;div>
&lt;a href="#slide-deck">
#
&lt;/a>
Slide Deck
&lt;/div>
&lt;/h2>
&lt;html>
&lt;iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/5eb4feb9f9d549adb9b591b103043d86" title="Ansible Molecule for DevOps" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777">&lt;/iframe>
&lt;/html>
&lt;h2 id="video" >
&lt;div>
&lt;a href="#video">
#
&lt;/a>
Video
&lt;/div>
&lt;/h2>
&lt;div id="player">&lt;/div>
&lt;script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
youtube_player = new YT.Player('player', {
height: '390',
width: '100%',
videoId: 'dmOcK9btC1Q',
playerVars: {
'playsinline': 1
},
});
}
function timeToSeconds(time) {
const [minutes, seconds] = time.split(':').map(Number);
return (minutes * 60) + seconds;
}
function time(time) {
youtube_player.seekTo(timeToSeconds(time))
}
&lt;/script>
&lt;p>&lt;ytbutton onclick="time('00:00')">00:00 Ansible Molecule for DevOps - DevConf CZ 2023&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('00:21')">00:21 Contents&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('00:45')">00:45 Ansible Molecule quick introduction&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('01:56')">01:56 Molecule installation and usage&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('03:11')">03:11 Molecule folder structure and molecule commands&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('04:10')">04:10 Molecule configuration file molecule.yml&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('05:03')">05:03 Molecule.yml platforms for molecule-azure-driver&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('06:33')">06:33 Architecture overview for molecule-azure-driver&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('07:54')">07:54 How we use Ansible Molecule and benefits&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('10:10')">10:10 TL; DR&lt;/ytbutton>&lt;/p>
&lt;p>&lt;ytbutton onclick="time('11:26')">11:26 Question&lt;/ytbutton>&lt;/p>
&lt;h2 id="presentation-page" >
&lt;div>
&lt;a href="#presentation-page">
#
&lt;/a>
Presentation page
&lt;/div>
&lt;/h2>
&lt;p>&lt;a href="https://devconfcz2023.sched.com/event/18c43a49c3bbf9d6a5ff47ed111463da">https://devconfcz2023.sched.com/event/18c43a49c3bbf9d6a5ff47ed111463da&lt;/a>&lt;/p></description></item></channel></rss>