本文中的例子在 ansible 和 Ansible Tower 里都通过。
controller 对 openstack 的接入
本文里的 controller 是我的笔记本电脑,需要做以下配置:
建立 /etc/ansible/openstack.yml,内容如下
clouds:
poc:
auth:
username: 'admin'
password: xxxxxxxxxxxxxxxxxxxxx
project_name: 'Haibin_Lee'
auth_url: 'http://192.168.205.2:5000/v2.0'
region_name: RegionOne
ansible:
use_hostnames: True
expand_hostvars: True
fail_on_errors: True
auth 里的是 openstack 的相关验证信息。然后在你的 ansible 项目根目录下下载 openstack.py
wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack.py
chmod +x openstack.py
验证你的配置
./openstack.py --list
如果正确,会列出你的 openstack 服务里的 hosts
然后在你的 ansible 项目根目录下放置独立的 ansible.cfg 文件并修改它的内容,
[defaults]
inventory = ./openstack.py
这样就可以动态加载 openstack 里的服务器 inventory 了。
手动在对应的 openstack 集群里创建一台虚拟机,用于执行 ansible 剧本,创建新虚拟机用。本文中命名为 openstack-connector,使用 ubuntu 14.04 版本系统。
在 openstack-connector 里安装以下软件
sudo apt-get install gcc libssl-dev sendmail python-pip
sudo -H pip install -U pip
sudo -H pip install cryptography shade
检查状态 ./openstack.py --host openstack-connector
,你可以看到很长一串的 json 格式输出。
最后把你的公钥拷贝到 openstack-connector 里,我这台机器的 IP 是 192.168.220.57。
ssh-copy-id root@192.168.220.57