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" |
- 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