{"id":20968,"date":"2022-12-07T22:10:35","date_gmt":"2022-12-07T21:10:35","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=20968"},"modified":"2022-12-07T22:18:34","modified_gmt":"2022-12-07T21:18:34","slug":"cloud-init-native-ansible-support","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/","title":{"rendered":"cloud-init native Ansible support"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"151\" height=\"100\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png\" alt=\"\" class=\"wp-image-20970\" \/><\/figure>\n\n\n\n<p>Cloud-init is a software developed to setup automatically a cloud virtual machine using metadata ingested and applied at the first boot or at a chosen frequency. All the magic happens through a #cloud-config YAML file.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">#cloud-config already supports Ansible execution since ages<\/h2>\n\n\n\n<p>Yes, true ! But only through cc_runcmd module as follows<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#cloud-config\n\npackages:\n  - git\n  - ansible\n\nruncmd:\n  - &#091; git, clone, &lt;some magic repo URL&gt; ]\n  - &#091; ansible-playbook, &lt;magic playbook&gt; ]<\/code><\/pre>\n\n\n\n<p>Alternatively, you can install Ansible through Python package manager (aka. pip)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#cloud-config\n\npackages: \n  - git\n  - ansible\n\nruncmd:\n  - &#091; python3, -m, pip, install, ansible ]\n  - &#091; git, clone, &lt;some magic repo URL&gt; ]\n  - &#091; ansible-playbook, &lt;magic playbook&gt; ]<\/code><\/pre>\n\n\n\n<p>Both methods work perfectly fine \ud83d\ude42 <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New #cloud-config Ansible module: cc_ansible<\/h2>\n\n\n\n<p>Native cloud-init Ansible support offers not only better readability for our YAML file but also a huge operative advantage. As we can now execute, test, validate the execution of the Ansible playbooks in an isolated manner by executing the Ansible playbook as a standalone module:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;root@bastion-openvpn ~]# cloud-init single --name cc_ansible\nCloud-init v. 22.4.2 running 'single' at Wed, 07 Dec 2022 20:48:32 +0000. Up 2457.30 seconds.\nStarting Ansible Pull at 2022-12-07 21:48:35\n\/usr\/bin\/ansible-pull --url=https:\/\/oauth2:&lt;GitHub access token&gt;@github.com\/jewdba\/Ansible_OpenVPN-server.git playbooks\/cloud-init_openvpn-server_setup.yml\n\nPLAY &#091;OpenVPN setup] ********************\n\nTASK &#091;Gathering Facts] *********************************************************\nok: &#091;localhost]\n\nTASK &#091;Install eady-rsa package] ************************************************\nchanged: &#091;localhost]\n...<\/code><\/pre>\n\n\n\n<p>Indeed, the cc_ansible module is now available since the release 22.3.x  and it goes even beyond a simple Ansible playbook execution. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Please refer to the documentation for details <\/p>\n\n\n\n<p><a href=\"https:\/\/cloudinit.readthedocs.io\/en\/latest\/topics\/modules.html#module-cloudinit.config.cc_ansib\">https:\/\/cloudinit.readthedocs.io\/en\/latest\/topics\/modules.html#module-cloudinit.config.cc_ansib<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">#cloud-config an Ansible Control node<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># cloud-config\n\nansible:\n  install_method: pip\n  package_name: ansible\n  run_user: ansible\n  setup_controller:\n    repositories:\n      - path: \/home\/ansible\/\n       source: &lt;some magic repo URL&gt;\n    run_ansible:\n      - playbook_dir: \/home\/ansible\/&lt;magit Ansible project&gt;\n        playbook_name: &lt;magic playbook&gt;<\/code><\/pre>\n\n\n\n<p>Looks promising isn&#8217;t it?  <\/p>\n\n\n\n<p><strong>Hint<\/strong>: Checkout the documentation as you might misinterpret some parameters like run_user which works only in case Ansible has been installed with pip (install_method). <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">#cloud-config an Ansible managed node (ansible-pull)<\/h3>\n\n\n\n<p>This paragraph is probably the most interesting as you may want to cloud-init a machine with ansible-pull.<\/p>\n\n\n\n<p>Let&#8217;s cloud-init an OpenVPN Rocky Linux 8 server:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#cloud-config\n\nusers:\n  - name: ansible\n    homedir: \/home\/ansible\n    shell: \/bin\/bash\n    sudo: 'ALL=(ALL) NOPASSWD:ALL'\n    ssh_authorized_keys:\n      - &lt;SSH plubic key to connect from your laptop&gt;\n\npackages:\n  - unzip\n  - epel-release\n  - git\n\nruncmd:\n# fail2ban part of epel-release repo.\n  - &#091;\/usr\/bin\/dnf, -y, install, fail2ban]\n  - &#091;\/usr\/bin\/dnf, -y, update, google-osconfig-agent]\n  - &#091;\/usr\/bin\/dnf, -y, update, google-guest-agent]\n  - &#091;\/usr\/bin\/systemctl, restart, fail2ban]\n\nwrite_files:\n  - path: \/etc\/fail2ban\/jail.d\/sshd.conf\n    permissions: '0640'\n    owner: root\n    content: |\n      &#091;sshd]\n      enabled=true\n      # don't block localhost, local machines\n      ignoreip=127.0.0.1\/8 192.168.0.1\/16\n\nansible:\n  install_method: distro\n  package_name: ansible.noarch\n  pull:\n   #accept_host_key: true\n    url: \"https:\/\/oauth2:&lt;GitHub access token&gt;@github.com\/jewdba\/Ansible_OpenVPN-server.git\"\n    playbook_name: \"playbooks\/cloud-init_openvpn-server_setup.yml\"<\/code><\/pre>\n\n\n\n<p>Quite clear isn&#8217;t it?<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Almost the perfect combo<\/h1>\n\n\n\n<p>It&#8217;s definitively worth to invest some time of debugging in order to get everything done by cloud-init and the new cc_ansible module  \ud83d\ude42 <\/p>\n\n\n\n<p>Hereby some learnings which may help you to gain\/save time:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RTFM ! Read the manual at least twice ! Especially, for the run_user parameter<br>(only taken in account if install_method is set to pip)<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sometimes it&#8217;s easier to look at the source code of cc_ansible to understand what is documented (It&#8217;s unfortunately well known in the community)<br><a href=\"https:\/\/github.com\/canonical\/cloud-init\/blob\/main\/cloudinit\/config\/cc_ansible.py\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/canonical\/cloud-init\/blob\/main\/cloudinit\/config\/cc_ansible.py<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Don&#8217;t trust the documentation examples \ud83d\ude42 You need to set install_method and package_name whatever the chosen installation method.<br>Hereby, the proof (snippet of cc_ansible python module)<br><img loading=\"lazy\" decoding=\"async\" width=\"472\" height=\"168\" class=\"wp-image-20974\" style=\"width: 350px\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/Screenshot-2022-12-07-at-21.22.35-1.png\" alt=\"\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/Screenshot-2022-12-07-at-21.22.35-1.png 472w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/Screenshot-2022-12-07-at-21.22.35-1-300x107.png 300w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pay attention to the Ansible installation method (parameter install_method) and the tools you want to install (package_name) ! Depending, on your needs the ansible-core package may not be enough.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the exact package name while using native package manager of distrubution (install_method: distro) ! <\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Last one but not least, run_user parameter does only apply to ansible command lines tools.<br>The git repo checkout\/clone is executed as root<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Have fun with #Ansible and #cloud-init<\/h3>\n\n\n\n<p><br>Of course, the Ansible playbooks must be production grade upfront any cloud-init trials<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cloud-init is a software developed to setup automatically a cloud virtual machine using metadata ingested and applied at the first boot or at a chosen frequency. All the magic happens through a #cloud-config YAML file. #cloud-config already supports Ansible execution since ages Yes, true ! But only through cc_runcmd module as follows Alternatively, you can [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1321,1320,42],"tags":[150,2776,2667],"type_dbi":[],"class_list":["post-20968","post","type-post","status-publish","format-standard","hentry","category-ansible","category-devops","category-operating-systems","tag-ansible","tag-cloud-init","tag-devops-2"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>cloud-init native Ansible support - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"cloud-init native Ansible support\" \/>\n<meta property=\"og:description\" content=\"Cloud-init is a software developed to setup automatically a cloud virtual machine using metadata ingested and applied at the first boot or at a chosen frequency. All the magic happens through a #cloud-config YAML file. #cloud-config already supports Ansible execution since ages Yes, true ! But only through cc_runcmd module as follows Alternatively, you can [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-07T21:10:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-07T21:18:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png\" \/>\n<meta name=\"author\" content=\"J\u00e9r\u00f4me Witt\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"J\u00e9r\u00f4me Witt\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/\"},\"author\":{\"name\":\"J\u00e9r\u00f4me Witt\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/a2d3ecddaf732850101a39b9d62c31b7\"},\"headline\":\"cloud-init native Ansible support\",\"datePublished\":\"2022-12-07T21:10:35+00:00\",\"dateModified\":\"2022-12-07T21:18:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/\"},\"wordCount\":456,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png\",\"keywords\":[\"Ansible\",\"cloud-init\",\"devops\"],\"articleSection\":[\"Ansible\",\"DevOps\",\"Operating systems\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/\",\"name\":\"cloud-init native Ansible support - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png\",\"datePublished\":\"2022-12-07T21:10:35+00:00\",\"dateModified\":\"2022-12-07T21:18:34+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/a2d3ecddaf732850101a39b9d62c31b7\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png\",\"width\":151,\"height\":100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"cloud-init native Ansible support\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/a2d3ecddaf732850101a39b9d62c31b7\",\"name\":\"J\u00e9r\u00f4me Witt\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/17095c081578ca53f52ec4030ba2bde72cc18badb325cd2ba1ee2831106507ad?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/17095c081578ca53f52ec4030ba2bde72cc18badb325cd2ba1ee2831106507ad?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/17095c081578ca53f52ec4030ba2bde72cc18badb325cd2ba1ee2831106507ad?s=96&d=mm&r=g\",\"caption\":\"J\u00e9r\u00f4me Witt\"},\"description\":\"J\u00e9rome Witt started his Consultant career a few years ago. He is specialized in database and infrastructure management, engineering, and optimization. He is very skilled in Oracle high availability, backup &amp; recovery, and tuning technologies. His expertise also includes the open source field (Linux\/Unix), advanced Perl, Shell, Windows PowerShell programming, and Automation tools (UC4). J\u00e9r\u00f4me Witt is Oracle Certified Professional 11g (OCP 11g), Oracle Certified Expert Tuning (OCE), and ITIL V3 Foundation certified. Prior to joining dbi services, J\u00e9r\u00f4me Witt was Consultant at Trivadis in Basel. He also worked as a Junior Automation specialist at Selmoni AG in Basel. J\u00e9r\u00f4me Witt holds a BTS degree in Information Systems and Industrial Networks from France. His branch-related experience covers Pharma, Health Care, Banking &amp; Financial Services, Energy, Automotive etc.\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/jerome-witt\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"cloud-init native Ansible support - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/","og_locale":"en_US","og_type":"article","og_title":"cloud-init native Ansible support","og_description":"Cloud-init is a software developed to setup automatically a cloud virtual machine using metadata ingested and applied at the first boot or at a chosen frequency. All the magic happens through a #cloud-config YAML file. #cloud-config already supports Ansible execution since ages Yes, true ! But only through cc_runcmd module as follows Alternatively, you can [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/","og_site_name":"dbi Blog","article_published_time":"2022-12-07T21:10:35+00:00","article_modified_time":"2022-12-07T21:18:34+00:00","og_image":[{"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png","type":"","width":"","height":""}],"author":"J\u00e9r\u00f4me Witt","twitter_card":"summary_large_image","twitter_misc":{"Written by":"J\u00e9r\u00f4me Witt","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/"},"author":{"name":"J\u00e9r\u00f4me Witt","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/a2d3ecddaf732850101a39b9d62c31b7"},"headline":"cloud-init native Ansible support","datePublished":"2022-12-07T21:10:35+00:00","dateModified":"2022-12-07T21:18:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/"},"wordCount":456,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png","keywords":["Ansible","cloud-init","devops"],"articleSection":["Ansible","DevOps","Operating systems"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/","url":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/","name":"cloud-init native Ansible support - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png","datePublished":"2022-12-07T21:10:35+00:00","dateModified":"2022-12-07T21:18:34+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/a2d3ecddaf732850101a39b9d62c31b7"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/12\/image.png","width":151,"height":100},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/cloud-init-native-ansible-support\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"cloud-init native Ansible support"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/a2d3ecddaf732850101a39b9d62c31b7","name":"J\u00e9r\u00f4me Witt","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/17095c081578ca53f52ec4030ba2bde72cc18badb325cd2ba1ee2831106507ad?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/17095c081578ca53f52ec4030ba2bde72cc18badb325cd2ba1ee2831106507ad?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/17095c081578ca53f52ec4030ba2bde72cc18badb325cd2ba1ee2831106507ad?s=96&d=mm&r=g","caption":"J\u00e9r\u00f4me Witt"},"description":"J\u00e9rome Witt started his Consultant career a few years ago. He is specialized in database and infrastructure management, engineering, and optimization. He is very skilled in Oracle high availability, backup &amp; recovery, and tuning technologies. His expertise also includes the open source field (Linux\/Unix), advanced Perl, Shell, Windows PowerShell programming, and Automation tools (UC4). J\u00e9r\u00f4me Witt is Oracle Certified Professional 11g (OCP 11g), Oracle Certified Expert Tuning (OCE), and ITIL V3 Foundation certified. Prior to joining dbi services, J\u00e9r\u00f4me Witt was Consultant at Trivadis in Basel. He also worked as a Junior Automation specialist at Selmoni AG in Basel. J\u00e9r\u00f4me Witt holds a BTS degree in Information Systems and Industrial Networks from France. His branch-related experience covers Pharma, Health Care, Banking &amp; Financial Services, Energy, Automotive etc.","url":"https:\/\/www.dbi-services.com\/blog\/author\/jerome-witt\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20968","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=20968"}],"version-history":[{"count":9,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20968\/revisions"}],"predecessor-version":[{"id":20981,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20968\/revisions\/20981"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=20968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=20968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=20968"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=20968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}