使用Vagrant来创建运行Windows10环境的Ansible和Terraform
因为想要学习IaC并将Windows 10用作客户端终端,所以我使用Vagrant创建了执行环境。
自然的、社會的或物理的周圍事物及條件。
Windows10 Pro 1809
Vagrant 2.2.6
VirtualBox 6.0.14
※虚拟机的操作系统是CentOS7.6,且预先安装了git。
使用Vagrant可以在不污染Windows环境的情况下进行各种实验。
用于执行Ansible的Vagrantfile配置文件的环境。
公式文档的安装方法
https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
Vagrant.configure('2') do |config|
config.vm.box = "bento/centos-7.6"
config.vm.hostname = "ansible.local"
config.vm.network "private_network",ip: "192.168.33.10"
config.vm.define 'ansible' do |host|
end
config.vm.provider "virtualbox" do |vb|
vb.name = "ansible.local"
vb.customize ["modifyvm", :id, "--memory", "2048"]
end
config.vm.provider "virtualbox" do |vb|
config.vm.provision :shell, inline:"sudo yum install epel-release -y >/dev/null 2&1"
config.vm.provision :shell, inline:"sudo yum install ansible git -y >/dev/null 2&1"
end
end
Vagrantfile是用来运行Terraform的环境设置文件。
官方文档(Terraform)
https://www.terraform.io/intro/index.html
※尽管我想自动化执行wget和环境变量的安装,但由于某种原因,它会重复执行多次,所以我只能在创建虚拟机后手动输入命令…
创建一个运行Terraform的虚拟机
Vagrant.configure('2') do |config|
config.vm.box = "bento/centos-7.6"
config.vm.hostname = "terraform.local"
config.vm.network "private_network",ip: "192.168.33.11"
config.vm.define 'terraform' do |host|
end
config.vm.provider "virtualbox" do |vb|
vb.name = "terraform.local"
vb.customize ["modifyvm", :id, "--memory", "2048"]
config.vm.provision :shell, :inline:"yum install wget unzip python3 git -y >/dev/null 2&1"
end
end
在vagrant启动后,登录操作系统并配置awscli(假设terraform的执行目标是AWS)。
请参考以下链接:https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-linux.html
#vagrant ssh
[vagrant@terraform ~]$ wget https://bootstrap.pypa.io/get-pip.py
[vagrant@terraform ~]$ python3 get-pip.py --user
[vagrant@terraform ~]$ pip3 install --upgrade --user awscli
下载并配置Terraform,使其可用
[vagrant@terraform ~]$ wget https://releases.hashicorp.com/terraform/0.12.16/terraform_0.12.16_linux_386.zip
[vagrant@terraform ~]$ sudo unzip terraform_0.12.16_linux_386.zip -d /usr/local/bin/
只需将凭据放入环境变量中,就可以在AWS上使用Terraform。