Når mysql-server
er installeret hovedløst, er der ingen adgangskode. Derfor skal du lave .my.cnf
fungerer, skal den have en tom kodeordslinje. Her er hvad jeg testede med for en .my.cnf
:
[client]
user=root
password=
Det er også lidt mærkeligt at sætte .my.cnf
i din vagrant
brugermappe som ejet af root og kun læsbar som root.
Efter at have sikret, at adgangskoden var tom i .my.cnf
, var jeg i stand til at indstille adgangskoden til root korrekt i disse fire sammenhænge. Bemærk, at den ikke kører efter det, da .my.cnf
skal opdateres, så den ikke består idempotenstesten.
Der er en note på den mulige mysql_user-modulside, der foreslår at skrive adgangskoden og derefter at skrive .my.cnf
fil. Hvis du gør det, skal du bruge en where
klausul til mysql_user
handling (sandsynligvis med en filstatistik før det).
Endnu mere elegant er det at bruge check_implicit_admin
sammen med login_user
og login_password
. Det er smukt idempotent.
Som en tredje måde, måske check_implicit_admin
gør det endnu nemmere.
Her er min succesfulde spillebog, der viser ovenstående, testet med et par friske servere. Lidt stolt af dette. Bemærk .my.cnf
er unødvendig for alt dette.
---
- hosts: mysql
vars:
mysql_root_password: fart
tasks:
- name: Install MySQL
apt: name={{ item }} update_cache=yes cache_valid_time=3600 state=present
sudo: yes
with_items:
- python-mysqldb
- mysql-server
#- name: copy cnf
# copy: src=.my.cnf dest=~/.my.cnf owner=ubuntu mode=0644
# sudo: yes
- name: Start the MySQL service
sudo: yes
service:
name: mysql
state: started
enabled: true
- name: update mysql root password for all root accounts
sudo: yes
mysql_user:
name: root
host: "{{ item }}"
password: "{{ mysql_root_password }}"
login_user: root
login_password: "{{ mysql_root_password }}"
check_implicit_admin: yes
priv: "*.*:ALL,GRANT"
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
(rediger- fjernet min.cnf)