在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