在Vagrant中使用Ansible进行虚拟环境配置(工作进行中)

正在记录备忘录。

库存处理

在Ansible中,只针对在清单文件中列出的主机进行配置管理。

将来看,库存文件的格式似乎类似于主机文件,但随着复杂记录的增加,它与主机文件的差异变得非常大。

    Inventory — Ansible Documentation

ansible.cfg 中设置的路径的文件 (默认为 /etc/ansible/hosts) 会从存储目录读取。

ansible.cfg会按照以下顺序搜索:当前命令执行的目录,环境变量ANSIBLE_CONFIG,~/ansible.cfg,/etc/ansible/ansible.cfg。

    • Inventory File · yteraoka/ansible-tutorial Wiki

 

    The Ansible Configuration File — Ansible Documentation

在Vagrant上的使用方式

在Vagrant中,清单文件会自动生成,并且设置在Vagrant本地路径的.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory中,然后被读取。

如果想要更改库存设置,请在Vagrantfile中编写设置。

    Ansible – Provisioning – Vagrant Documentation

tty 的问题

在Amazon Linux和CentOS中,由于/etc/sudoers中的requiretty是有效的,所以在执行Ansible的sudo命令时;

sorry, you must have a tty to run sudo

发生了上述错误,无法执行。

    Can’t execute sudo commands on machine that requires tty to run sudo · Issue #1482 · mitchellh/vagrant

在Vagrantfile中启用以下选项来解决问题:

config.ssh.pty = true

搭建标准的LAMP环境。

如果要在CentOS 6.5上安装和配置Apache、MySQL和PHP,可以编写以下的Playbook:

---
- hosts: default
  sudo: true
  user: user

  tasks:

    - name: Install Apache, MySQL, PHP
      yum: pkg={{ item }} state=installed
      with_items:
        - httpd
        - mysql
        - mysql-server
        - php
        - php-common
        - php-gd
        - php-mysql
        - php-pear
        - php-xml
        - MySQL-python
      notify:
        - httpd restarted
        - mysqld restarted

    - name: Update Apache configuration
      copy: src=roles/common/files/etc/httpd/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf owner=root group=root mode=0644

    - name: Add Apache upstart script
      copy: src=roles/common/files/etc/init/httpd.upstart.conf dest=/etc/init/httpd.upstart.conf owner=root group=root mode=0644

    - name: Create MySQL database
      mysql_db: name=mydb encoding=utf8 state=present

    - name: Create MySQL user
      mysql_user: name=user password=password priv=mydb.*:ALL state=present

  handlers:

    - name: httpd restarted
      service: name=httpd enabled=yes state=restarted

    - name: mysqld restarted
      service: name=mysqld enabled=yes state=restarted
广告
将在 10 秒后关闭
bannerAds