parent
053c594d65
commit
a192935daf
@ -1,155 +0,0 @@
|
||||
|
||||
#
|
||||
# Add users expected by tests to an OS X machine. Assumes passwordless sudo to
|
||||
# root.
|
||||
#
|
||||
# WARNING: this creates non-privilged accounts with pre-set passwords!
|
||||
#
|
||||
|
||||
- hosts: test-targets
|
||||
gather_facts: true
|
||||
become: true
|
||||
tasks:
|
||||
- name: Disable non-localhost SSH for Mitogen users
|
||||
blockinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
block: |
|
||||
Match User mitogen__* Address !127.0.0.1
|
||||
DenyUsers *
|
||||
|
||||
#
|
||||
# Hashed passwords.
|
||||
#
|
||||
- name: Create Mitogen test group
|
||||
group:
|
||||
name: "mitogen__group"
|
||||
|
||||
- name: Create Mitogen test users
|
||||
user:
|
||||
name: "mitogen__{{item}}"
|
||||
shell: /bin/bash
|
||||
groups: mitogen__group
|
||||
password: "{{ (item + '_password') | password_hash('sha256') }}"
|
||||
with_items:
|
||||
- has_sudo
|
||||
- has_sudo_pubkey
|
||||
- require_tty
|
||||
- pw_required
|
||||
- readonly_homedir
|
||||
- require_tty_pw_required
|
||||
- slow_user
|
||||
when: ansible_system != 'Darwin'
|
||||
|
||||
- name: Create Mitogen test users
|
||||
user:
|
||||
name: "mitogen__user{{item}}"
|
||||
shell: /bin/bash
|
||||
password: "{{ ('user' + item + '_password') | password_hash('sha256') }}"
|
||||
with_sequence: start=1 end=21
|
||||
when: ansible_system != 'Darwin'
|
||||
|
||||
#
|
||||
# Plaintext passwords
|
||||
#
|
||||
- name: Create Mitogen test users
|
||||
user:
|
||||
name: "mitogen__{{item}}"
|
||||
shell: /bin/bash
|
||||
groups: mitogen__group
|
||||
password: "{{item}}_password"
|
||||
with_items:
|
||||
- has_sudo
|
||||
- has_sudo_pubkey
|
||||
- require_tty
|
||||
- pw_required
|
||||
- require_tty_pw_required
|
||||
- readonly_homedir
|
||||
- slow_user
|
||||
when: ansible_system == 'Darwin'
|
||||
|
||||
- name: Create Mitogen test users
|
||||
user:
|
||||
name: "mitogen__user{{item}}"
|
||||
shell: /bin/bash
|
||||
password: "user{{item}}_password"
|
||||
with_sequence: start=1 end=21
|
||||
when: ansible_system == 'Darwin'
|
||||
|
||||
- name: Hide test users from login window.
|
||||
shell: >
|
||||
defaults
|
||||
write
|
||||
/Library/Preferences/com.apple.loginwindow
|
||||
HiddenUsersList
|
||||
-array-add '{{item}}'
|
||||
with_items:
|
||||
- mitogen__require_tty
|
||||
- mitogen__pw_required
|
||||
- mitogen__require_tty_pw_required
|
||||
when: ansible_system == 'Darwin'
|
||||
|
||||
- name: Hide test users from login window.
|
||||
shell: >
|
||||
defaults
|
||||
write
|
||||
/Library/Preferences/com.apple.loginwindow
|
||||
HiddenUsersList
|
||||
-array-add 'mitogen__user{{item}}'
|
||||
with_sequence: start=1 end=21
|
||||
when: ansible_distribution == 'MacOSX'
|
||||
|
||||
- name: Readonly homedir for one account
|
||||
shell: "chown -R root: ~mitogen__readonly_homedir"
|
||||
|
||||
- name: Slow bash profile for one account
|
||||
copy:
|
||||
dest: ~mitogen__slow_user/.{{item}}
|
||||
src: ../data/docker/mitogen__slow_user.profile
|
||||
with_items:
|
||||
- bashrc
|
||||
- profile
|
||||
|
||||
- name: Install pubkey for one account
|
||||
file:
|
||||
path: ~mitogen__has_sudo_pubkey/.ssh
|
||||
state: directory
|
||||
mode: go=
|
||||
owner: mitogen__has_sudo_pubkey
|
||||
|
||||
- name: Install pubkey for one account
|
||||
copy:
|
||||
dest: ~mitogen__has_sudo_pubkey/.ssh/authorized_keys
|
||||
src: ../data/docker/mitogen__has_sudo_pubkey.key.pub
|
||||
mode: go=
|
||||
owner: mitogen__has_sudo_pubkey
|
||||
|
||||
- name: Require a TTY for two accounts
|
||||
lineinfile:
|
||||
path: /etc/sudoers
|
||||
line: "{{item}}"
|
||||
with_items:
|
||||
- Defaults>mitogen__pw_required targetpw
|
||||
- Defaults>mitogen__require_tty requiretty
|
||||
- Defaults>mitogen__require_tty_pw_required requiretty,targetpw
|
||||
|
||||
- name: Require password for two accounts
|
||||
lineinfile:
|
||||
path: /etc/sudoers
|
||||
line: "{{lookup('pipe', 'whoami')}} ALL = ({{item}}) ALL"
|
||||
with_items:
|
||||
- mitogen__pw_required
|
||||
- mitogen__require_tty_pw_required
|
||||
|
||||
- name: Allow passwordless for two accounts
|
||||
lineinfile:
|
||||
path: /etc/sudoers
|
||||
line: "{{lookup('pipe', 'whoami')}} ALL = ({{item}}) NOPASSWD:ALL"
|
||||
with_items:
|
||||
- mitogen__require_tty
|
||||
- mitogen__readonly_homedir
|
||||
|
||||
- name: Allow passwordless for many accounts
|
||||
lineinfile:
|
||||
path: /etc/sudoers
|
||||
line: "{{lookup('pipe', 'whoami')}} ALL = (mitogen__user{{item}}) NOPASSWD:ALL"
|
||||
with_sequence: start=1 end=21
|
@ -1,120 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Build the Docker images used for testing.
|
||||
"""
|
||||
|
||||
import commands
|
||||
import os
|
||||
import shlex
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
|
||||
DEBIAN_DOCKERFILE = r"""
|
||||
FROM debian:stretch
|
||||
RUN apt-get update
|
||||
RUN \
|
||||
apt-get install -y python2.7 openssh-server sudo rsync git strace \
|
||||
libjson-perl python-virtualenv && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/cache/apt
|
||||
"""
|
||||
|
||||
CENTOS6_DOCKERFILE = r"""
|
||||
FROM centos:6
|
||||
RUN yum clean all && \
|
||||
yum -y install -y python2.6 openssh-server sudo rsync git strace sudo \
|
||||
perl-JSON python-virtualenv && \
|
||||
yum clean all && \
|
||||
groupadd sudo && \
|
||||
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
|
||||
|
||||
"""
|
||||
|
||||
CENTOS7_DOCKERFILE = r"""
|
||||
FROM centos:7
|
||||
RUN yum clean all && \
|
||||
yum -y install -y python2.7 openssh-server sudo rsync git strace sudo \
|
||||
perl-JSON python-virtualenv && \
|
||||
yum clean all && \
|
||||
groupadd sudo && \
|
||||
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
|
||||
|
||||
"""
|
||||
|
||||
DOCKERFILE = r"""
|
||||
COPY data/001-mitogen.sudo /etc/sudoers.d/001-mitogen
|
||||
COPY data/docker/ssh_login_banner.txt /etc/ssh/banner.txt
|
||||
RUN \
|
||||
chsh -s /bin/bash && \
|
||||
mkdir -p /var/run/sshd && \
|
||||
echo i-am-mitogen-test-docker-image > /etc/sentinel && \
|
||||
echo "Banner /etc/ssh/banner.txt" >> /etc/ssh/sshd_config && \
|
||||
groupadd mitogen__sudo_nopw && \
|
||||
useradd -s /bin/bash -m mitogen__has_sudo -G SUDO_GROUP && \
|
||||
useradd -s /bin/bash -m mitogen__has_sudo_pubkey -G SUDO_GROUP && \
|
||||
useradd -s /bin/bash -m mitogen__has_sudo_nopw -G mitogen__sudo_nopw && \
|
||||
useradd -s /bin/bash -m mitogen__webapp && \
|
||||
useradd -s /bin/bash -m mitogen__pw_required && \
|
||||
useradd -s /bin/bash -m mitogen__require_tty && \
|
||||
useradd -s /bin/bash -m mitogen__require_tty_pw_required && \
|
||||
useradd -s /bin/bash -m mitogen__readonly_homedir && \
|
||||
useradd -s /bin/bash -m mitogen__slow_user && \
|
||||
chown -R root: ~mitogen__readonly_homedir && \
|
||||
( for i in `seq 1 21`; do useradd -s /bin/bash -m mitogen__user${i}; done; ) && \
|
||||
( for i in `seq 1 21`; do echo mitogen__user${i}:user${i}_password | chpasswd; done; ) && \
|
||||
( echo 'root:rootpassword' | chpasswd; ) && \
|
||||
( echo 'mitogen__has_sudo:has_sudo_password' | chpasswd; ) && \
|
||||
( echo 'mitogen__has_sudo_pubkey:has_sudo_pubkey_password' | chpasswd; ) && \
|
||||
( echo 'mitogen__has_sudo_nopw:has_sudo_nopw_password' | chpasswd; ) && \
|
||||
( echo 'mitogen__webapp:webapp_password' | chpasswd; ) && \
|
||||
( echo 'mitogen__pw_required:pw_required_password' | chpasswd; ) && \
|
||||
( echo 'mitogen__require_tty:require_tty_password' | chpasswd; ) && \
|
||||
( echo 'mitogen__require_tty_pw_required:require_tty_pw_required_password' | chpasswd; ) && \
|
||||
( echo 'mitogen__readonly_homedir:readonly_homedir_password' | chpasswd; ) && \
|
||||
( echo 'mitogen__slow_user:slow_user_password' | chpasswd; ) && \
|
||||
mkdir ~mitogen__has_sudo_pubkey/.ssh && \
|
||||
( echo '#!/bin/bash\nexec strace -ff -o /tmp/pywrap$$.trace python2.7 "$@"' > /usr/local/bin/pywrap; chmod +x /usr/local/bin/pywrap; )
|
||||
|
||||
COPY data/docker/mitogen__has_sudo_pubkey.key.pub /home/mitogen__has_sudo_pubkey/.ssh/authorized_keys
|
||||
COPY data/docker/mitogen__slow_user.profile /home/mitogen__slow_user/.profile
|
||||
COPY data/docker/mitogen__slow_user.profile /home/mitogen__slow_user/.bashrc
|
||||
|
||||
RUN \
|
||||
chown -R mitogen__has_sudo_pubkey ~mitogen__has_sudo_pubkey && \
|
||||
chmod -R go= ~mitogen__has_sudo_pubkey
|
||||
|
||||
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
|
||||
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
|
||||
|
||||
ENV NOTVISIBLE "in users profile"
|
||||
RUN echo "export VISIBLE=now" >> /etc/profile
|
||||
|
||||
EXPOSE 22
|
||||
CMD ["/usr/sbin/sshd", "-D"]
|
||||
"""
|
||||
|
||||
|
||||
def sh(s, *args):
|
||||
if args:
|
||||
s %= tuple(map(commands.mkarg, args))
|
||||
return shlex.split(s)
|
||||
|
||||
|
||||
for (distro, wheel, prefix) in (
|
||||
('debian', 'sudo', DEBIAN_DOCKERFILE),
|
||||
('centos6', 'wheel', CENTOS6_DOCKERFILE),
|
||||
('centos7', 'wheel', CENTOS7_DOCKERFILE),
|
||||
):
|
||||
mydir = os.path.abspath(os.path.dirname(__file__))
|
||||
with tempfile.NamedTemporaryFile(dir=mydir) as dockerfile_fp:
|
||||
dockerfile_fp.write(prefix)
|
||||
dockerfile_fp.write(DOCKERFILE.replace('SUDO_GROUP', wheel))
|
||||
dockerfile_fp.flush()
|
||||
|
||||
subprocess.check_call(sh('docker build %s -t %s -f %s',
|
||||
mydir,
|
||||
'mitogen/%s-test' % (distro,),
|
||||
dockerfile_fp.name
|
||||
))
|
@ -0,0 +1,25 @@
|
||||
|
||||
# `image_prep`
|
||||
|
||||
This directory contains Ansible playbooks for building the Docker containers
|
||||
used for testing, or for setting up an OS X laptop so the tests can (mostly)
|
||||
run locally.
|
||||
|
||||
The Docker config is more heavily jinxed to trigger adverse conditions in the
|
||||
code, the OS X config just has the user accounts.
|
||||
|
||||
See ../README.md for a (mostly) description of the accounts created.
|
||||
|
||||
|
||||
## Building the containers
|
||||
|
||||
``./build_docker_images.sh``
|
||||
|
||||
|
||||
## Preparing an OS X box
|
||||
|
||||
WARNING: this creates a ton of accounts with preconfigured passwords. It is
|
||||
generally impossible to restrict remote access to these, so your only option is
|
||||
to disable remote login and sharing.
|
||||
|
||||
``ansible-playbook -b -c local -i localhost, -l localhost setup.yml``
|
@ -0,0 +1,116 @@
|
||||
|
||||
- hosts: all
|
||||
strategy: linear
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- raw: >
|
||||
if ! python -c ''; then
|
||||
if type -p yum; then
|
||||
yum -y install python;
|
||||
else
|
||||
apt-get -y update && apt-get -y install python;
|
||||
fi;
|
||||
fi
|
||||
|
||||
- hosts: all
|
||||
strategy: mitogen_linear
|
||||
# Can't gather facts before here.
|
||||
gather_facts: true
|
||||
vars:
|
||||
distro: "{{ansible_distribution}}"
|
||||
ver: "{{ansible_distribution_major_version}}"
|
||||
|
||||
packages:
|
||||
common:
|
||||
- git
|
||||
- openssh-server
|
||||
- rsync
|
||||
- strace
|
||||
- sudo
|
||||
Debian:
|
||||
"9":
|
||||
- libjson-perl
|
||||
- python-virtualenv
|
||||
CentOS:
|
||||
"6":
|
||||
- perl-JSON
|
||||
"7":
|
||||
- perl-JSON
|
||||
- python-virtualenv
|
||||
|
||||
tasks:
|
||||
- when: ansible_virtualization_type != "docker"
|
||||
meta: end_play
|
||||
|
||||
- apt:
|
||||
name: "{{packages.common + packages[distro][ver]}}"
|
||||
state: installed
|
||||
update_cache: true
|
||||
when: distro == "Debian"
|
||||
|
||||
- yum:
|
||||
name: "{{packages.common + packages[distro][ver]}}"
|
||||
state: installed
|
||||
update_cache: true
|
||||
when: distro == "CentOS"
|
||||
|
||||
- command: apt-get clean
|
||||
when: distro == "Debian"
|
||||
|
||||
- command: yum clean all
|
||||
when: distro == "CentOS"
|
||||
|
||||
- file:
|
||||
path: /var/cache/apt
|
||||
state: absent
|
||||
when: distro == "Debian"
|
||||
|
||||
- user:
|
||||
name: root
|
||||
password: "{{ 'rootpassword' | password_hash('sha256') }}"
|
||||
shell: /bin/bash
|
||||
|
||||
- file:
|
||||
path: /var/run/sshd
|
||||
state: directory
|
||||
|
||||
- command: ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
|
||||
args:
|
||||
creates: /etc/ssh/ssh_host_rsa_key
|
||||
|
||||
- group:
|
||||
name: "{{sudo_group[distro]}}"
|
||||
|
||||
- copy:
|
||||
dest: /etc/sentinel
|
||||
content: |
|
||||
i-am-mitogen-test-docker-image
|
||||
|
||||
- copy:
|
||||
dest: /etc/ssh/banner.txt
|
||||
src: ../data/docker/ssh_login_banner.txt
|
||||
|
||||
- copy:
|
||||
dest: /etc/sudoers.d/001-mitogen
|
||||
src: ../data/docker/001-mitogen.sudo
|
||||
|
||||
- lineinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
line: Banner /etc/ssh/banner.txt
|
||||
|
||||
- lineinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
line: PermitRootLogin yes
|
||||
regexp: '.*PermitRootLogin.*'
|
||||
|
||||
- lineinfile:
|
||||
path: /etc/pam.d/sshd
|
||||
regexp: '.*session.*required.*pam_loginuid.so'
|
||||
line: session optional pam_loginuid.so
|
||||
|
||||
- copy:
|
||||
mode: 'u+rwx,go=rx'
|
||||
dest: /usr/local/bin/pywrap
|
||||
content: |
|
||||
#!/bin/bash
|
||||
exec strace -ff -o /tmp/pywrap$$.trace python2.7 "$@"'
|
@ -0,0 +1,139 @@
|
||||
#
|
||||
# Add users expected by tests. Assumes passwordless sudo to root.
|
||||
#
|
||||
# WARNING: this creates non-privilged accounts with pre-set passwords!
|
||||
#
|
||||
|
||||
- hosts: all
|
||||
gather_facts: true
|
||||
strategy: mitogen_linear
|
||||
become: true
|
||||
vars:
|
||||
special_users:
|
||||
- has_sudo
|
||||
- has_sudo_pubkey
|
||||
- pw_required
|
||||
- readonly_homedir
|
||||
- require_tty
|
||||
- require_tty_pw_required
|
||||
- slow_user
|
||||
- webapp
|
||||
|
||||
groups:
|
||||
- has_sudo: ['mitogen__group', '{{sudo_group[distro]}}']
|
||||
- has_sudo_pubkey: ['mitogen__group', '{{sudo_group[distro]}}']
|
||||
- has_sudo_nopw: ['mitogen__group', 'mitogen__sudo_nopw']
|
||||
|
||||
normal_users: "{{
|
||||
lookup('sequence', 'start=1 end=5 format=user%d', wantlist=True)
|
||||
}}"
|
||||
|
||||
all_users: "{{
|
||||
special_users +
|
||||
normal_users
|
||||
}}"
|
||||
tasks:
|
||||
- name: Disable non-localhost SSH for Mitogen users
|
||||
blockinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
block: |
|
||||
Match User mitogen__* Address !127.0.0.1
|
||||
DenyUsers *
|
||||
|
||||
- name: Create Mitogen test groups
|
||||
group:
|
||||
name: "mitogen__{{item}}"
|
||||
with_items:
|
||||
- group
|
||||
- sudo_nopw
|
||||
|
||||
- name: Create user accounts
|
||||
block:
|
||||
- user:
|
||||
name: "mitogen__{{item}}"
|
||||
shell: /bin/bash
|
||||
groups: "{{groups[item]|default(['mitogen__group'])}}"
|
||||
password: "{{ (item + '_password') | password_hash('sha256') }}"
|
||||
loop: "{{all_users}}"
|
||||
when: ansible_system != 'Darwin'
|
||||
- user:
|
||||
name: "mitogen__{{item}}"
|
||||
shell: /bin/bash
|
||||
groups: "{{groups[item]|default(['mitogen__group'])}}"
|
||||
password: "{{item}}_password"
|
||||
loop: "{{all_users}}"
|
||||
when: ansible_system == 'Darwin'
|
||||
|
||||
- name: Hide users from login window.
|
||||
loop: "{{all_users}}"
|
||||
when: ansible_system == 'Darwin'
|
||||
osx_defaults:
|
||||
array_add: true
|
||||
domain: /Library/Preferences/com.apple.loginwindow
|
||||
type: array
|
||||
key: HiddenUsersList
|
||||
value: ['mitogen_{{item}}']
|
||||
|
||||
- name: Readonly homedir for one account
|
||||
shell: "chown -R root: ~mitogen__readonly_homedir"
|
||||
|
||||
- name: Slow bash profile for one account
|
||||
copy:
|
||||
dest: ~mitogen__slow_user/.{{item}}
|
||||
src: ../data/docker/mitogen__slow_user.profile
|
||||
with_items:
|
||||
- bashrc
|
||||
- profile
|
||||
|
||||
- name: Install pubkey for mitogen__has_sudo_pubkey
|
||||
block:
|
||||
- file:
|
||||
path: ~mitogen__has_sudo_pubkey/.ssh
|
||||
state: directory
|
||||
mode: go=
|
||||
owner: mitogen__has_sudo_pubkey
|
||||
- copy:
|
||||
dest: ~mitogen__has_sudo_pubkey/.ssh/authorized_keys
|
||||
src: ../data/docker/mitogen__has_sudo_pubkey.key.pub
|
||||
mode: go=
|
||||
owner: mitogen__has_sudo_pubkey
|
||||
|
||||
- name: Install slow profile for one account
|
||||
block:
|
||||
- copy:
|
||||
dest: ~mitogen__slow_user/.profile
|
||||
src: ../data/docker/mitogen__slow_user.profile
|
||||
- copy:
|
||||
dest: ~mitogen__slow_user/.bashrc
|
||||
src: ../data/docker/mitogen__slow_user.profile
|
||||
|
||||
- name: Require a TTY for two accounts
|
||||
lineinfile:
|
||||
path: /etc/sudoers
|
||||
line: "{{item}}"
|
||||
with_items:
|
||||
- Defaults>mitogen__pw_required targetpw
|
||||
- Defaults>mitogen__require_tty requiretty
|
||||
- Defaults>mitogen__require_tty_pw_required requiretty,targetpw
|
||||
|
||||
- name: Require password for two accounts
|
||||
lineinfile:
|
||||
path: /etc/sudoers
|
||||
line: "{{lookup('pipe', 'whoami')}} ALL = ({{item}}) ALL"
|
||||
with_items:
|
||||
- mitogen__pw_required
|
||||
- mitogen__require_tty_pw_required
|
||||
|
||||
- name: Allow passwordless sudo for require_tty/readonly_homedir
|
||||
lineinfile:
|
||||
path: /etc/sudoers
|
||||
line: "{{lookup('pipe', 'whoami')}} ALL = ({{item}}) NOPASSWD:ALL"
|
||||
with_items:
|
||||
- mitogen__require_tty
|
||||
- mitogen__readonly_homedir
|
||||
|
||||
- name: Allow passwordless for many accounts
|
||||
lineinfile:
|
||||
path: /etc/sudoers
|
||||
line: "{{lookup('pipe', 'whoami')}} ALL = (mitogen__{{item}}) NOPASSWD:ALL"
|
||||
loop: "{{normal_users}}"
|
@ -0,0 +1,4 @@
|
||||
|
||||
[defaults]
|
||||
strategy_plugins = ../../ansible_mitogen/plugins/strategy
|
||||
retry_files_enabled = false
|
@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Build the Docker images used for testing.
|
||||
"""
|
||||
|
||||
import commands
|
||||
import os
|
||||
import shlex
|
||||
import subprocess
|
||||
|
||||
|
||||
BASEDIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
def sh(s, *args):
|
||||
if args:
|
||||
s %= args
|
||||
return shlex.split(s)
|
||||
|
||||
|
||||
for base_image, name in [('debian:stretch', 'debian'),
|
||||
('centos:6', 'centos6'),
|
||||
('centos:7', 'centos7')]:
|
||||
args = sh('docker run --rm -it -d %s /bin/bash', base_image)
|
||||
container_id = subprocess.check_output(args).strip()
|
||||
try:
|
||||
subprocess.check_call(
|
||||
cwd=BASEDIR,
|
||||
args=sh('''
|
||||
ansible-playbook -i %s, -c docker setup.yml -vvv
|
||||
''', container_id)
|
||||
)
|
||||
|
||||
subprocess.check_call(sh('''
|
||||
docker commit
|
||||
--change 'EXPOSE 22'
|
||||
--change 'CMD ["/usr/sbin/sshd", "-D"]'
|
||||
%s
|
||||
mitogen/%s-test
|
||||
''', container_id, name))
|
||||
finally:
|
||||
subprocess.check_call(sh('docker rm -f %s', container_id))
|
@ -0,0 +1,13 @@
|
||||
|
||||
- hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- set_fact:
|
||||
# Hacktacular.. but easiest place for it with current structure.
|
||||
sudo_group:
|
||||
MacOSX: admin
|
||||
Debian: wheel
|
||||
CentOS: sudo
|
||||
|
||||
- import_playbook: _container_setup.yml
|
||||
- import_playbook: _user_accounts.yml
|
Loading…
Reference in New Issue