Как удалить пользователя и хозяина ansible?

В настоящее время у меня есть Ansible playbook, устанавливающий mySql и некоторые другие вещи. Во время роли mySQL все пользователи root и их хосты были настроены правильно. Однако после успешного завершения воспроизведения книги, один из пользователей (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)

0

Решение

Похоже, ошибка в модуль mysql_user— проблема в том, что в имени вашего хоста есть дефис, а модуль не цитирует пользователя и хост, поэтому выполняемый модулем DROP USER, скорее всего, завершается с ошибкой (т. е. не совпадает). Просто из любопытства, вы пробовали эту игру на хосте без переноса?

1

Другие решения

Других решений пока нет …