Ansible idempotent MySQL installation Playbook

后端 未结 11 1406
后悔当初
后悔当初 2021-01-30 04:29

I want to setup a MySQL server on AWS, using Ansible for the configuration management. I am using the default AMI from Amazon (ami-3275ee5b), which uses yum

11条回答
  •  悲哀的现实
    2021-01-30 04:37

    I know this is an old question, but I am sharing my working playbook for those, who are looking for it:

    mysql.yml

    ---
     - name: Install the MySQL packages
       apt: name={{ item }} state=installed update_cache=yes
       with_items:
         - mysql-server-5.6
         - mysql-client-5.6
         - python-mysqldb
         - libmysqlclient-dev
    
     - name: Copy the configuration file (my.cnf)
       template: src=my.cnf.j2 dest=/etc/mysql/my.cnf
       notify:
         - Restart MySQL
    
     - name: Update MySQL root password for all root accounts
       mysql_user: name=root host={{ item }} password={{ mysql_root_pass }} state=present
       with_items:
         - "{{ ansible_hostname }}"
         - 127.0.0.1
         - ::1
         - localhost
    
     - name: Copy the root credentials as .my.cnf file
       template: src=root.cnf.j2 dest=~/.my.cnf mode=0600
    
     - name: Ensure Anonymous user(s) 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
       notify:
         - Restart MySQL
    

    vars.yml

    ---
     mysql_port: 3306 #Default is 3306, please change it if you are using non-standard
     mysql_bind_address: "127.0.0.1" #Change it to "0.0.0.0",if you want to listen everywhere
     mysql_root_pass: mypassword #MySQL Root Password
    

    my.cnf.j2

    [client]
    port            = 3306
    socket          = /var/run/mysqld/mysqld.sock
    
    [mysqld_safe]
    socket          = /var/run/mysqld/mysqld.sock
    nice            = 0
    
    [mysqld]
    user            = mysql
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    port            = {{ mysql_port }}
    basedir         = /usr
    datadir         = /var/lib/mysql
    tmpdir          = /tmp
    lc-messages-dir = /usr/share/mysql
    skip-external-locking
    bind-address            = {{ mysql_bind_address }}
    key_buffer              = 16M
    max_allowed_packet      = 64M
    thread_stack            = 192K
    thread_cache_size       = 8
    myisam-recover         = BACKUP
    query_cache_limit       = 1M
    query_cache_size        = 16M
    log_error = /var/log/mysql/error.log
    expire_logs_days        = 10
    max_binlog_size         = 100M
    
    [mysqldump]
    quick
    quote-names
    max_allowed_packet      = 64M
    
    [mysql]
    
    [isamchk]
    key_buffer              = 16M
    
    !includedir /etc/mysql/conf.d/
    

    root.cnf.j2

    [client]
    user=root
    password={{ mysql_root_pass }}
    

提交回复
热议问题