blob: c28eae61fa4a6ef41ef80503c5faa90fcb49511d [file] [log] [blame]
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
- hosts: {{ instance_name }}
gather_facts: False
connection: ssh
user: {{ username }}
become: yes
vars:
container_name: {{ container_name }}
docker_image: {{ docker_image }}
network_method: {{ network_method }}
ports:
{% for port in ports %}
- device: {{ port.device }}
xos_network_id: {{ port.xos_network_id }}
mac: {{ port.mac|default("") }}
ip: {{ port.ip }}
snoop_instance_mac: {{ port.snoop_instance_mac }}
snoop_instance_id: {{ port.snoop_instance_id }}
parent_mac: {{ port.parent_mac|default("") }}
s_tag: {{ port.s_tag|default("") }}
c_tag: {{ port.c_tag|default("") }}
next_hop: {{ port.next_hop|default("") }}
bridge: {{ port.bridge }}
{% endfor %}
volumes:
{% for volume in volumes %}
- {{ volume }}
{% endfor %}
tasks:
# - name: Fix /etc/hosts
# lineinfile:
# dest=/etc/hosts
# regexp="127.0.0.1 localhost"
# line="127.0.0.1 localhost {{ instance_hostname }}"
- name: Add repo key
apt_key:
keyserver=hkp://pgp.mit.edu:80
id=58118E89F3A912897C070ADBF76221572C52609D
- name: Install Docker repo
apt_repository:
repo="deb https://apt.dockerproject.org/repo ubuntu-trusty main"
state=present
- name: Install Docker
apt:
name={{ '{{' }} item {{ '}}' }}
state=latest
update_cache=yes
with_items:
# XXX docker 1.10 is not working on cloudlab
# - docker-engine
- python-pip
- python-httplib2
- name: Install Docker 1.9.1
apt:
name={{ '{{' }} item {{ '}}' }}
update_cache=yes
with_items:
- docker-engine=1.9.1-0~trusty
# Something is installing a requests library that is incompative with pip, and
# will cause this recipe to fail next time it tries to run pip. Only the one
# in /usr/local/lib is bad. There's still a good one in /usr/lib
- name: check if bad requests library installed
stat: path=/usr/local/lib/python2.7/dist-packages/requests
register: bad_requests
- name: remove bad request library
shell: mv /usr/local/lib/python2.7/dist-packages/requests /usr/local/lib/python2.7/dist-packages/requests-bad
when: bad_requests.stat.exists == True
- name: Install docker-py
pip:
name=docker-py
state=latest
- name: install Pipework
get_url: url=https://raw.githubusercontent.com/jpetazzo/pipework/master/pipework
dest=/usr/local/bin/pipework
mode=0755
# - name: Start Container
# docker:
# docker_api_version: "1.18"
# name: {{ container_name }}
# # was: reloaded
# state: running
# image: {{ docker_image }}
- name: check if systemd is installed
stat: path=/usr/bin/systemctl
register: systemctl
- name: container upstart
template: src=/opt/xos/synchronizers/openstack/templates/container.conf.j2 dest=/etc/init/container-{{ container_name }}.conf
- name: container systemd
template: src=/opt/xos/synchronizers/openstack/templates/container.service.j2 dest=/lib/systemd/system/container-{{ container_name }}.service
- name: container startup script
template: src=/opt/xos/synchronizers/openstack/templates/start-container.sh.j2 dest=/usr/local/sbin/start-container-{{ container_name }}.sh mode=0755
- name: container teardown script
template: src=/opt/xos/synchronizers/openstack/templates/stop-container.sh.j2 dest=/usr/local/sbin/stop-container-{{ container_name }}.sh mode=0755
- name: restart systemd
shell: systemctl daemon-reload
when: systemctl.stat.exists == True
{% if ports %}
- name: make sure bridges are setup
shell: ifconfig {{ '{{' }} item.bridge {{ '}}' }}
with_items: "ports"
{% endif %}
- name: Make sure container is running
service: name=container-{{ container_name }} state=started