2015-08-06 2 views
0

В настоящее время у меня есть 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) 

ответ

1

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

+0

Нет, я еще не пробовал это на неопухольном хосте. Я собираюсь удалить дефис из имени хоста, чтобы снова запустить игру. – Ktrod

+1

Удаление дефиса из имени хоста, похоже, сделало трюк. Спасибо за помощь. – Ktrod

Смежные вопросы