読者です 読者をやめる 読者になる 読者になる

cloverrose's blog

Python, Machine learning, Emacs, CI/CD, Webアプリなど

クリーンな環境にAnsibleインストールしてローカルでpipとapt-getを試す

前回はsudoなしで済むplaybookにしていたが、aptなどsudoが必要なplaybookを試してみた。--ask-sudo-passを知らなくて--ask-passでsudoしようとしていたため躓いた。

また、ローカルでやる場合も、リモートでやる場合もAnsibleをインストールする必要があるので、クリーンな環境(Ubuntu12.04)にインストールする手順も整理してみた。

playbook

playbook.yml (sudoなしのやつ virtualenv環境にpip install)
---
- hosts: 127.0.0.1
  user: rose
  tasks:
  - name: Pip install some packages
    pip: name=$item
    with_items:
      - pep8
      - pytest
playbook2.yml (sudoありのやつ apt-get)
---
- hosts: 127.0.0.1
  user: rose
  sudo: yes
  tasks:
  - name: Apt install some packages
    apt: pkg=$item force=yes update_cache=yes
    with_items:
      - git
      - gitk

taskごとにsudo指定できた(Playbooks | AnsibleWorks のYou can also use sudo on a particular task instead of the whole play:あたり)

インストールとansibleの実行

# update apt-get and install essential packages
sudo apt-get update
sudo apt-get install -y python-dev  # need for pip install ansible
sudo apt-get install -y sshpass  # need for --ask-[sudo-]pass

# install pip
wget http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
wget http://raw.github.com/pypa/pip/master/contrib/get-pip.py
sudo python get-pip.py 

# install ansible and essential
sudo pip install markupsafe  # need parse yml
sudo pip install ansible

# set ANSIBLE_HOSTS
echo "127.0.0.1" > ~/ansible_hosts
export ANSIBLE_HOSTS=~/ansible_hosts

# execute ansible-playbook
ansible-playbook playbook.yml --connection=local
ansible-playbook playbook2.yml --connection=local --ask-sudo-pass