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