{"id":2277,"date":"2019-08-09T07:00:32","date_gmt":"2019-08-09T05:00:32","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=2277"},"modified":"2021-02-20T12:49:32","modified_gmt":"2021-02-20T11:49:32","slug":"ansible-kontrolliert-etc-chrony-conf","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/ansible-kontrolliert-etc-chrony-conf\/","title":{"rendered":"Ansible kontrolliert \/etc\/chrony.conf"},"content":{"rendered":"\n<p>Damit neue Linux-VMs die richtige Zeit finden, habe ich mir eine kleine <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_reuse_roles.html\" target=\"_blank\">Ansible-Rolle<\/a> namens <em>chrony<\/em> erstellt, welche ich im Folgenden vorstellen m\u00f6chte.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># tree chrony\/\nchrony\/\n\u251c\u2500\u2500 handlers\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 main.yml\n\u251c\u2500\u2500 tasks\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 main.yml\n\u2514\u2500\u2500 templates\n    \u2514\u2500\u2500 chrony.conf.j2<\/code><\/pre>\n\n\n\n<p>Die Rolle kommt sehr minimalistisch daher und umfasst nur die zwingend erforderlichen Verzeichnisse und Dateien. Sie \u00e4hnelt sehr stark der Rolle <em>resolv.conf<\/em>, welche ich bereits in diesem <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/dns-konfiguration-mit-ansible\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Beitrag (\u00f6ffnet in neuem Tab)\">Beitrag<\/a> beschrieben habe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">tasks\/main.yml<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: make sure chronyd is installed\n  yum:\n    name: chrony\n    state: latest\n    update_cache: yes\n\n- name: deploy chrony.conf template\n  template:\n    src: \/data\/ansible\/roles\/chrony\/templates\/chrony.conf.j2\n    dest: \/etc\/chrony.conf\n    owner: root\n    group: root\n    mode: 0644\n    backup: yes\n  notify:\n  - restart chronyd<\/code><\/pre>\n\n\n\n<p>Im ersten Task nutze ich das Modul <a rel=\"noreferrer noopener\" label=\"yum (\u00f6ffnet in neuem Tab)\" href=\"https:\/\/docs.ansible.com\/ansible\/2.9\/modules\/yum_module.html\" target=\"_blank\">yum<\/a>, um sicherzustellen, dass das chrony-Paket auch installiert ist, um dieses im zweiten Schritt zu konfigurieren.<\/p>\n\n\n\n<p>Der zweite Task nutzt das Modul <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.ansible.com\/ansible\/2.9\/modules\/template_module.html\" target=\"_blank\">template<\/a>, um aus der Datei unter <em>roles\/chrony\/templates\/chrony.conf.j2<\/em> die Zielkonfiguration in der Datei <em>\/etc\/chrony.conf<\/em> auf dem Zielsystem zu erstellen. Aktuell enth\u00e4lt mein Template statischen Text und ich h\u00e4tte genauso gut das Modul <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.ansible.com\/ansible\/2.9\/modules\/copy_module.html\" target=\"_blank\">copy<\/a>  nutzen k\u00f6nnen, um diese Datei auf das Zielsystem zu bringen. Ich  verwende jedoch das template-Modul, um mir die M\u00f6glichkeit offen zu  halten, durch Verwendung von <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_variables.html\" target=\"_blank\">Variablen<\/a> den Inhalt dynamisch erstellen zu lassen.<\/p>\n\n\n\n<p>Am Ende des zweiten Tasks wird ein <a rel=\"noreferrer noopener\" aria-label=\"Handler (\u00f6ffnet in neuem Tab)\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_intro.html#handlers-running-operations-on-change\" target=\"_blank\">Handler<\/a> namens &#8218;restart chronyd&#8216; aufgerufen. Die Funktionsweise von Handlern habe ich bereits in <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/dns-konfiguration-mit-ansible\/\">DNS-Konfiguration mit Ansible<\/a> beschrieben. Bitte lest f\u00fcr weitere Informationen dort nach.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Damit neue Linux-VMs die richtige Zeit finden, habe ich mir eine kleine Ansible-Rolle namens chrony erstellt, welche ich im Folgenden vorstellen m\u00f6chte. Die Rolle kommt sehr minimalistisch daher und umfasst nur die zwingend erforderlichen Verzeichnisse und Dateien. Sie \u00e4hnelt sehr stark der Rolle resolv.conf, welche ich bereits in diesem Beitrag beschrieben habe. tasks\/main.yml Im ersten<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/ansible-kontrolliert-etc-chrony-conf\/\">[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],"tags":[547,548],"class_list":["post-2277","post","type-post","status-publish","format-standard","hentry","category-ansible","tag-chrony","tag-chronyd"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2277","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=2277"}],"version-history":[{"count":5,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2277\/revisions"}],"predecessor-version":[{"id":2774,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2277\/revisions\/2774"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=2277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=2277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=2277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}