В настоящее время у меня есть Ansible playbook, устанавливающий mySql и несколько других вещей. Во время роли mySQL у меня все правильные пользователи и их хосты настроены правильно. Однако после успешного завершения воспроизведения, один из пользователей (root @ keenan-virtualbox) по-прежнему присутствует после того, как я попытаюсь удалить его из таблицы. Я не хочу снимать эту учетную запись и не хочу, чтобы она работала на разных компьютерах. Таким образом, $ ansible_hostname должен быть хостом, который я хочу удалить. Ниже приведена моя main.yml из задачи mysql и таблицы mysql.user после ее завершения.Как удалить пользователя и хост?
---
- name: MySQL | Set debconf vars
action: raw sudo echo mysql-server mysql-server/root_password password
$mysql_root_password | sudo /usr/bin/debconf-set-selections
tags: mysql
- name: MySQL | Set debconf vars
action: raw sudo echo mysql-server mysql-server/root_password_again password $mysql_root_password | sudo /usr/bin/debconf-set-selections
tags: mysql
- name: Add the OS specific variables
include_vars: "{{ ansible_os_family }}.yml"
- name: Install the mysql packages in Redhat derivatives
yum: name={{ item }} state=installed
with_items: mysql_pkgs
when: ansible_os_family == 'RedHat'
- name: Install the mysql packages in Debian derivatives
apt: name={{ item }} state=installed update_cache=yes
with_items: mysql_pkgs
environment: env
when: ansible_os_family == 'Debian'
- name: Copy the my.cnf file
template: src=my.cnf.{{ ansible_os_family }}.j2 dest={{ mysql_conf_dir }}/my.cnf
notify:
- restart mysql
- name: Create the directory /etc/mysql/conf.d
file: path=/etc/mysql/conf.d state=directory
notify:
- restart mysql
- name: Start the mysql services Redhat
service: name={{ mysql_service }} state=started enabled=yes
- name: update mysql root password for all root accounts
ignore_errors: yes
mysql_user: name=root host={{ item }} password={{ mysql_root_db_pass }}
with_items:
- $ansible_hostname
- 127.0.0.1
- ::1
- localhost
- name: copy .my.cnf file with root password credentials
template: src=.my.cnf.j2 dest=~/.my.cnf mode=0600
- name: ensure anonymous users are not in the database
mysql_user: name='' host={{ item }} state=absent
with_items:
- localhost
- "{{ ansible_hostname }}"
- name: remove the test database
mysql_db: name=test state=absent
- name: Create the database's
mysql_db: name={{ item.name }} state=present
with_items: mysql_db
when: mysql_db|lower() != 'none'
- name: Create the database users
mysql_user: name={{ item.name }} password={{ item.pass|default("") }}
priv={{ item.priv|default("*.*:ALL") }} state=present host={{ item.host | default("localhost") }}
with_items: mysql_users
when: mysql_users|lower() != 'none'
- name: Delete ansible host root user
mysql_user: name=root host={{ ansible_hostname }} state=absent
- name: Restart mysql
action: service name=mysql state=restarted enabled=true
--------------------------------------------------------------------------
+------------------+-------------------+-------------------------------------------+
| user | host | password |
+------------------+-------------------+-------------------------------------------+
| root | localhost | *3F9DF5A32114E05C12C50A83EAE02991016C917B |
| root | keenan-VirtualBox | |
| root | 127.0.0.1 | *3F9DF5A32114E05C12C50A83EAE02991016C917B |
| root | ::1 | *3F9DF5A32114E05C12C50A83EAE02991016C917B |
| debian-sys-maint | localhost | *726DD22D744226797C5E47F531F32DE43F595B5B |
| root | $ansible_hostname | *3F9DF5A32114E05C12C50A83EAE02991016C917B |
+------------------+-------------------+-------------------------------------------+
8 rows in set (0.02 sec)
Нет, я еще не пробовал это на неопухольном хосте. Я собираюсь удалить дефис из имени хоста, чтобы снова запустить игру. – Ktrod
Удаление дефиса из имени хоста, похоже, сделало трюк. Спасибо за помощь. – Ktrod