也就是说,在goserver运行之前,apt_update这个role会自动运行,该role主要作用是将apt源从默认的国外转成国内的阿里云,这样在安装软件时速度会更快,另外由于go-server不在阿里云源里,我们还需要手动添加go-server的源。apt_update目录如下:
├── files
│ └── sources.list
└── tasks
└── main.yml
在apt_update/tasks/main.yml文件中,设置阿里云的源和go-server自己的源:
---
- name: archieve existing sources.list
shell: creates="/etc/apt/sources.list.old" mv /etc/apt/sources.list /etc/apt/sources.list.old
- name: copy new sources.list
copy: src=https://www.linuxidc.com/sources.list dest=/etc/apt/
- name: add gocd.list
shell: creates="/etc/apt/sources.list.d/gocd.list" echo "deb https://download.go.cd /" | sudo tee /etc/apt/sources.list.d/gocd.list
- name: add gocd apt key
shell: curl https://download.go.cd/GOCD-GPG-KEY.asc | sudo apt-key add -
- name: update apt cache
apt: update_cache=yes
除了安装Go Server,我们还安装了Git,用于在构建项目时能够顺利从Git服务器(比如Github)下载到项目源代码。
对于两台Go Agent来说,也具有与Go Server相似的过程。
最后,运行vagrant up,我们便可以在Virtualbox中看到这3台虚拟机了:
然后在Host机器上打开:8153/go/pipelines,便可以看到Go Server的页面了:
请注意,此时的两台Go Agent虽然能够正常连接Go Server,但是他们的状态却是disable的,为了正常使用Go Agent来构建项目,你需要先在Go Server中将他们enable。点击页面上方的“AGENTS”,进入agents管理也便可enable/disable所有的agents:
还有个问题,Ansible所需要的inventory在哪里?事实上,Vagrant会基于Vangrantfile自动为我们生成Ansible的inventory文件,并放在与Vgrantfile文件同级的.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory文件中。对于本项目,在笔者的机器上所生成的vagrant_ansible_inventory文件如下:
# Generated by Vagrant
agent1 ansible_ssh_host=127.0.0.1 ansible_ssh_port=2200 ansible_ssh_user='vagrant' ansible_ssh_private_key_file='/Users/yteng/github/vagrant/ansible-go-server-2-agents-ubuntu1404/.vagrant/machines/agent1/virtualbox/private_key'
agent2 ansible_ssh_host=127.0.0.1 ansible_ssh_port=2201 ansible_ssh_user='vagrant' ansible_ssh_private_key_file='/Users/yteng/github/vagrant/ansible-go-server-2-agents-ubuntu1404/.vagrant/machines/agent2/virtualbox/private_key'
server ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='vagrant' ansible_ssh_private_key_file='/Users/yteng/github/vagrant/ansible-go-server-2-agents-ubuntu1404/.vagrant/machines/server/virtualbox/private_key'
[servers]
server
[agents]
agent[1:2]
[agents:vars]
goserver_ip=192.168.3.2
本文源代码可以到Linux公社资源站下载:
------------------------------------------分割线------------------------------------------
具体下载目录在 /2018年资料/4月/8日/用Vagrant和Ansible搭建持续交付平台/
------------------------------------------分割线------------------------------------------