Недавно я изучал Swift, и теперь, когда он с открытым исходным кодом , я собираюсь использовать его на своем сервере Linux.
Однако сначала я хотел запустить его внутри бокса Vagrant локально, и, когда я снабдил все свои боксы через Ansible, я создал простую пьесу и записываю ее здесь на случай, если она пригодится кому-либо еще!
В инструкции по установке легко следовать, так что я просто реплицировать их как набор действий. Обратите внимание, что имя файла последнего снимка содержит версию и дату, поэтому я создал их как переменные, чтобы их можно было изменить и просто повторно предоставить.
Обычно я запускаю Ansible на своей Vagrant VM напрямую, так как это означает, что мне не нужно устанавливать его локально и что мои ящики могут использоваться людьми с Windows. Поэтому я использую поставщика оболочки, чтобы сначала установить Ansible, а затем запустить playbook. Это файлы, которые я использую:
Vagrantfile:
Vagrant.configure("2") do |c|
c.vm.define "swiftdev", primary: true do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "private_network", ip: "192.168.99.202"
config.vm.hostname = "swiftdev.localhost"
# Prevent Vagrant 1.7 from asking for the vagrant user's password
config.ssh.insert_key = false
# Install ansible on guest & run playbook
config.vm.provision :shell,
:keep_color => true,
:inline => <<SCRIPT
if [ $(dpkg-query -W -f='${Status}' ansible 2>/dev/null | grep -c "ok installed") -eq 0 ];
then
export DEBIAN_FRONTEND=noninteractive
echo "Add Ansible repository"
apt-add-repository ppa:ansible/ansible &> /dev/null || exit 1
apt-get update -qq
echo "Installing Ansible"
apt-get install -qq ansible &> /dev/null || exit 1
echo "Runing apt-get upgrade"
apt-get update -qq &> /dev/null || exit 1
apt-get upgrade -y &> /dev/null || exit 1
fi
echo "Running Ansible playbook"
export PYTHONUNBUFFERED=1
export ANSIBLE_FORCE_COLOR=1
su vagrant -c "ansible-playbook -i 127.0.0.1, --connection=local /vagrant/vm-provisioning/init.yml"
SCRIPT
end
end
Обратите внимание, что я запускаю playbook init.yml как бродячий пользователь, чтобы использовать правильный домашний каталог. Это основная пьеса:
VM-инициализации / init.yml:
---
- hosts: all
vars:
swift_snapshot: "swift-2.2-SNAPSHOT-2015-12-10-a"
tasks:
- name: Install useful packages
apt: pkg={{ item }} state=latest
with_items:
# - curl
- vim
sudo: yes
include: swift.yml
Это не так много. Он устанавливает переменные для быстрого снимка, который мы хотим, а также устанавливает vim и curl, поскольку они всегда полезны!
Наконец, мы затем устанавливаем сам Swift в наш домашний каталог:
VM-инициализации / swift.yml:
---
- hosts: all
tasks:
- name: Create swift directory
file: path=~/swift state=directory owner=vagrant group=vagrant
- name: Install packages for swift
apt: pkg={{ item }} state=latest
with_items:
- clang-3.6
- libicu-dev
sudo: yes
- name: Use clang 3.6
alternatives: name=clang link=/usr/bin/clang path=/usr/bin/clang-3.6
sudo: yes
- name: Use clang++ 3.6
alternatives: name=clang++ link=/usr/bin/clang++ path=/usr/bin/clang++-3.6
sudo: yes
- name: Grab gpg keys
shell: gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys '7463 A81A 4B2E EA1B 551F FBCF D441 C977 412B 37AD' '1BE1 E29A 084C B305 F397 D62A 9F59 7F4D 21A5 6D5F'
args:
chdir: /home/vagrant
- name: Refresh gpg keys
shell: gpg --keyserver hkp://pool.sks-keyservers.net --refresh-keys Swift
- name: Create swift directory
file: path=~/swift state=directory owner=vagrant group=vagrant
- name: Download Swift snapshot
get_url: >
url=https://swift.org/builds/ubuntu1404/{{ swift_snapshot }}/{{ swift_snapshot }}-ubuntu14.04.tar.gz
dest=~/swift/swift-snapshot.tar.gz
mode=0444
owner=vagrant
- name: Download Swift snapshot signature file
get_url: >
url=https://swift.org/builds/ubuntu1404/{{ swift_snapshot }}/{{ swift_snapshot }}-ubuntu14.04.tar.gz.sig
dest=~/swift/swift-snapshot.tar.gz.sig
mode=0444
owner=vagrant
- name: Verify snapshot file
command: gpg --verify swift-snapshot.tar.gz.sig swift-snapshot.tar.gz
args:
chdir: ~/swift
- name: Remove current version
shell: rm -rf usr
args:
chdir: ~/swift
- name: Extract archive
shell: tar xzf swift-snapshot.tar.gz --strip-components 1
args:
chdir: ~/swift
- name: Update bashrc
lineinfile:
dest=~/.bashrc
line='export PATH=~/swift/usr/bin:"${PATH}"'
regexp="^export PATH=~/swift/usr/bin"
owner=vagrant
state=present
insertafter=EOF
create=True
Вот и все. Теперь вы можете зайти в виртуальную машину ssh и запустить swift в командной строке: