Manchmal braucht man in Ansible Zufallszahlen, entweder wenn man cronjobs für die Backups verteilt und nicht möchte, dass alle zur selben Zeit los gehen
Continue reading Gleichbleibende ZufallszahlenSchlagwort: ansible
Ansible: mode für Dateien und Verzeichnisse anders setzen
Bei vielen ansible Modulen gibt es den „mode“ Paramater, mit welchem man die Berechtigung für Verzeichnisse und Dateien setzen kann. Man kann jedoch nur einen Modus angeben, d.h. setzt man diesen beispielsweise auf: 0755 werden die Verzeichnisse world readable, jedoch auch alle Dateien world executable.
Will man dies verhindern kann man anstelle eines kleinen x ein grosses X setzen, das gilt dann nur für Verzeichnisse:
ansible: Service vor Änderung stoppen
Vor einer Änderung muss teilweise ein Dienst gestoppt sein, beispielsweise wenn man Eigenschaften eines Benutzers ändern, wenn unter diesem ein Dienst läuft.
Natürlich kann man im ansible task vor der der Änderung den Dienst stoppen und nachher starten, nur wäre das nicht mehr „idempotent“, da der Dienst dann auch gestoppt/gestartet würde wenn gar keine Änderung nötig ist.
Um dieses Problem zu Umgehen kann man mit dem check_mode vorher testen ob eine Änderung überhaupt nötig ist.
Continue reading ansible: Service vor Änderung stoppen
Ansible: Zeilenumbrüche werden ignoriert
Unter gewissen Umständen ignoriert ansible Zeilenumbrüche in jina2 (.j2) templates.
Das Problem lässt sich jedoch einfach beheben.
Continue reading Ansible: Zeilenumbrüche werden ignoriert
Ansible: mysql Abfrage
Möchte man mittels Ansible z.B. in eine Datenbank einen Wert hinzufügen, jedoch nur, wenn dieser noch nicht besteht, kann man das mittels einer Vorherigen SQL-Abfrage machen:
- name: "Get setting: myName" command: mysql --defaults-file=/root/.my.cnf myDatabase -Ns -e "select value from settings where name='myName';" register: setting_myName changed_when: setting_myName.stdout != "12345" - debug: msg="{{ setting_myName.stdout }}" - name: "Insert setting into database" mysql_db: login_host: "myDBhost" login_user: "myDBuser" login_password: "myDBPass" name: "myDatabase" state: "import" target: "/tmp/set_setting_myName.sql" when: setting_myName.stdout != "12345" |
Zuerst holt man sich den Wert aus der Datenbanktabelle und ändert diesen nur, wenn er noch nicht da steht (when: setting_myName.stdout != „12345“).
Quellen
Ansible: Nützliche playbooks für den linux admin
Einige mützliche Ansible playbooks vorgestellt.
Continue reading Ansible: Nützliche playbooks für den linux admin
redhat/CentOS: vmware-tools mit yum installieren
Das installieren der vmware-tools auf Linux Rechnern, kann manchmal lästig sein. Was viele nicht wissen:
Anstelle der manuellen Installation kann man das Packet: open-vm-tools
installieren (via: yum install open-vm-tools).
Das wird von vmware fully supported.
Bei CentOS6 ist es im EPEL repository drin, ab CentOS7 sogar im core repository.
Ein ansible-playbook dafür könnte so aussheen:
--- - hosts: vmware-servers tasks: # PREREQUISITES: For RHEL < 7 we need the EPEL repository - name: install the EPEL repo yum: pkg=epel-release state=latest when: (ansible_os_family == "RedHat" and ansible_distribution_major_version == "6") name: install the EPEL repo yum: name=https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm when: (ansible_os_family == "RedHat" and ansible_distribution_major_version == "5") # install open-vm-tools - name: install open-vm-tools yum: pkg=open-vm-tools state=latest when: ansible_os_family == "RedHat" - name: install open-vm-tools apt: pkg=open-vm-tools state=latest when: ansible_os_family == "Debian" # startup - name: ensure vmware-tools are running and started automatically service: name=vmtoolsd state=started enabled=yes when: ansible_os_family == "RedHat" - name: ensure vmware-tools are running and started automatically service: name=open-vm-tools state=started enabled=yes when: ansible_os_family == "Debian" |