{"id":1492,"date":"2016-07-25T08:30:09","date_gmt":"2016-07-25T06:30:09","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=1492"},"modified":"2021-01-25T13:03:37","modified_gmt":"2021-01-25T12:03:37","slug":"ansible-das-modul-yum_repository","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/ansible-das-modul-yum_repository\/","title":{"rendered":"Ansible &#8211; Das Modul yum_repository"},"content":{"rendered":"<p>Das Ansible Modul <code><a href=\"https:\/\/docs.ansible.com\/ansible\/yum_repository_module.html\">yum_repository<\/a><\/code>ist dazu geeignet, Repositories zu RPM-basierten Linux-Distributionen hinzuzuf\u00fcgen bzw. zu entfernen. Es findet z.B. in unserer Umgebung Anwendung, um Repositories von unserem lokalen Spiegelserver anzubinden. Der folgende Text gibt ein Beispiel zur Anwendung dieses <a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/modules.html\">Ansible-Moduls<\/a>.<\/p>\n<p>Auf meiner Spielwiese verwende ich folgende Konfiguration, um zwei Repositories hinzuzuf\u00fcgen.<\/p>\n<p><b>Hinweis:<\/b> Die folgende Konfiguration ist nicht zur Nachahmung empfohlen. Es handelt sich dabei um meine ersten Schritte mit Ansible. Es ist daher wahrscheinlich, dass die Konfiguration noch Fehler enth\u00e4lt, nicht optimiert ist und ein gro\u00dfes Verbesserungspotenzial besitzt. Die Nachahmung erfolgt ausdr\u00fccklich auf eigene Gefahr. \u00dcber Hinweise, wie man es besser machen kann, freue ich mich jederzeit.<\/p>\n<h2>Verzeichnisstruktur<\/h2>\n<p>Abgeleitet aus den &#8222;<a href=\"https:\/\/docs.ansible.com\/ansible\/2.9\/user_guide\/playbooks_best_practices.html#directory-layout\">Best Practices<\/a>&#8220; von Ansible, verwende ich auf meiner Spielwiese folgende Verzeichnisstruktur:<\/p>\n<pre>ansible\/\n|-- group_vars\n|   `-- e-stage               # variables for group e-stage\n|-- hosts                     # inventory file\n|-- host_vars                 # for system specific variables\n|-- roles\n|   |-- common                # this hierarchy represents a \"role\"\n|   |   |-- defaults          \n|   |   |-- files\n|   |   |-- handlers\n|   |   |   `-- main.yml      #  handlers file\n|   |   |-- meta\n|   |   |-- tasks\n|   |   |   `-- main.yml      #  tasks file can include smaller files if wanted\n|   |   `-- vars\n|   `-- std-repos\n|       |-- defaults\n|       |-- files\n|       |-- handlers\n|       |-- meta\n|       |-- tasks\n|       |-- templates\n|       `-- vars\n|-- set_repos.yml             # playbook which sets the repos\n|-- site.yml                  # master playbook file\n`-- staging                   # inventory file for staging environment\n<\/pre>\n<h2>Das Playbook<\/h2>\n<p>Das Playbook ist sehr kurz gehalten und gibt im Wesentlichen nur an, welche Hosts auf welche Rolle gemapped werden sollen.<\/p>\n<pre># set_repos.yml\n---\n- hosts: all\n  roles:\n    - std-repos\n<\/pre>\n<p>Das obige Playbook definiert, dass die Tasks aus der Datei <code>roles\/e-stage\/tasks\/main.yml<\/code> ausgef\u00fchrt werden sollen, welche wie folgt aufgebaut ist:<\/p>\n<pre>---\n- name: Add rhel-e-stage-repository\n  yum_repository:\n    name: \"{{ repo_name1 }}\"\n    description: \"{{ repo_description1 }}\"\n    baseurl: \"{{ repo_baseurl1 }}\"\n    gpgcheck: yes\n    gpgkey: file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-redhat-release\n\n- name: Add my-own-repository\n  yum_repository:\n    name: \"{{ repo_name2 }}\"\n    description: \"{{ repo_description2 }}\"\n    baseurl: \"{{ rebo_baseurl2 }}\"\n    gpgcheck: no\n<\/pre>\n<h2>GroupVars<\/h2>\n<p>Nun existieren im Staging-Bereich h\u00e4ufig noch weitere Stages. So gibt es oftmals eine T-, E- und I-Stage. Dabei ist jeder Stage ein eigenes Stage-Repository zugeordnet. Um die Systeme in den unterschiedlichen Stages mit den dazugeh\u00f6rigen Stage-Repositories zu versorgen, werden diese mit Hilfe der <code>group_vars<\/code> den entsprechenden Gruppen zugewiesen.<\/p>\n<p>F\u00fcr die Server der Gruppe <code>e-stage<\/code> wird in der Datei <code>group_vars\/e-stage<\/code> definiert:<\/p>\n<pre># file: group_vars\/e-stage\nrepo_name1: rhel-e-stage\nrepo_description1: Local RHEL-Repo for E-Stage\nrepo_baseurl1: http:\/\/repo.example.com\/rhel-e-stage\/\n\nrepo_name2: own-e-stage\nrepo_description2: Local OWN-Repo for E-Stage\nrepo_baseurl2: http:\/\/repo.example.com\/own-e-stage\/\n<\/pre>\n<p>Nach diesem Beispiel k\u00f6nnen nun weitere Variablen unter <code>group_vars<\/code> f\u00fcr andere Stages erstellt werden. Den Hosts in den entsprechenden Hostgruppen, werden auf diesem Wege die passenden Repositories hinzugef\u00fcgt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Ansible Modul yum_repositoryist dazu geeignet, Repositories zu RPM-basierten Linux-Distributionen hinzuzuf\u00fcgen bzw. zu entfernen. Es findet z.B. in unserer Umgebung Anwendung, um Repositories von unserem lokalen Spiegelserver anzubinden. Der folgende Text gibt ein Beispiel zur Anwendung dieses Ansible-Moduls. Auf meiner Spielwiese verwende ich folgende Konfiguration, um zwei Repositories hinzuzuf\u00fcgen. Hinweis: Die folgende Konfiguration ist nicht<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/ansible-das-modul-yum_repository\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[532,51],"tags":[410,305,394,397],"class_list":["post-1492","post","type-post","status-publish","format-standard","hentry","category-ansible","category-linux","tag-ansible","tag-planet","tag-repository","tag-yum"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=1492"}],"version-history":[{"count":8,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1492\/revisions"}],"predecessor-version":[{"id":2744,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1492\/revisions\/2744"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=1492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=1492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=1492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}