Vagrant - инструмент для создания виртуальной среды, написанный на языке Ruby.
Вы можете создать сервер c установленным Vagrant, полностью настроенный и готовый к работе с датацентром, используя форму
установки окружения из шаблона Openstack Heat.
Для самостоятельной установки выполянем следующие шаги:
1. Устанавливаем необходимые пакеты.
$ apt update
$ apt -y install git python python-pip virtualenv python-apt
2. Если нужен форвардинг SSH ключей, разрешаем форвард ключей для SSH сервера
$ sed -i '/^#AllowAgentForwarding\ yes/s/#//' /etc/ssh/sshd_config
$ systemctl restart ssh
$ echo 'Defaults env_keep+=SSH_AUTH_SOCK' | tee -a /etc/sudoers.d/sudo_ssh_forward
3. Устанавливаем пакеты и конфигурируем окружение virtualenv
$ virtualenv ~/ansible2.9
$ echo 'source ~/ansible2.9/bin/activate' >> ~/.bashrc
$ source ~/ansible2.9/bin/activate
$ sudo apt install -y vagrant
$ sudo apt remove -y ruby-fog-libvirt
$ sudo vagrant plugin install vagrant-openstack-provider
$ pip install ansible==2.9.7
$ pip install openstacksdk==0.43.0
$ pip install openstackclient
$ pip install "python-ironicclient!=2.5.2,!=2.7.1,!=3.0.0,>=2.3.0,<4.0.0;python_version=='2.7'"
4. Конфигурируем параметры подключения к датацентру, параметры подключения доступны в Панели управления
$ cat > ~/keystone_dc01 <<EOF
unset OS_USERNAME OS_PASSWORD OS_TENANT_NAME OS_AUTH_URL OS_TOKEN OS_URL
unset SERVICE_TOKEN SERVICE_ENDPOINT
unset OS_USER_DOMAIN_NAME OS_PROJECT_DOMAIN_NAME OS_PROJECT_NAME
export OS_IMAGE_API_VERSION=2
export OS_URL=<< dc_endpoint_public_url >>
export OS_AUTH_URL=<< dc_endpoint_public_url >>
export NEW_OS_AUTH_URL=<< dc_endpoint_public_url >>
export OS_USER_DOMAIN_NAME=myaccount003-domain
export OS_PROJECT_DOMAIN_NAME=myaccount003-domain
export OS_USERNAME=myaccount003
export OS_PROJECT_NAME=myaccount003-dc01
export OS_PASSWORD=<< openstack_password >>
export OS_IDENTITY_API_VERSION=3
EOF
5. Создаем файл Vagrantfile
$ cat > ~/Vagrantfile <<EOF
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Specify the default SSH username
config.ssh.username = "ubuntu"
# Configure the OpenStack provider for Vagrant
config.vm.provider "openstack" do |os,override|
# Specify OpenStack authentication information
os.identity_api_version = '3'
os.username = ENV['OS_USERNAME']
os.password = ENV['OS_PASSWORD']
os.project_name = ENV['OS_PROJECT_NAME']
os.project_domain_name = ENV['OS_PROJECT_DOMAIN_NAME']
os.user_domain_name = ENV['OS_USER_DOMAIN_NAME']
os.openstack_auth_url = ENV['OS_AUTH_URL']
# Specify instance information
os.server_name = "vagrant-test"
os.flavor = "vibox1"
os.image = "Ubuntu Server 18.04 LTS (2020-05-08)"
os.security_groups = ["default"]
end
end
EOF
Теперь вы можете создавать виртуальные серверы в своем датацентре из vagrant
$ vagrant up
==> default: Launching a server with the following settings...
==> default: -- Name : vagrant-test
==> default: -- Flavor : vibox1
==> default: -- KeyPair : vagrant-generated-3g54m0ax
==> default: Waiting for the server to be built...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 10.20.1.3:22
default: SSH username: ubuntu
default: SSH auth method: private key
default: Warning: Host unreachable. Retrying...
default: Warning: Connection refused. Retrying...
==> default: Machine booted and ready!
$ vagrant ssh
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-88-generic x86_64)
ubuntu@vagrant-test:~$ sudo id
uid=0(root) gid=0(root) groups=0(root)
Обратите внимание, что в приведенном примере Vagrantfile не указан приватный SSH ключ, в таком случае ключи будут созданы автоматически, публичный ключ
будет сохранен в инфраструктуре датацентра.