This tutorial is about the interaction of PyCharm (Community Edition), Vagrant and Ansible. I want to show how you can simplify your daily work.
Preconditions
- PyCharm installed (5.0.4)
- Vagrant installed (1.8.1)
- Ansible installed (2.0.0.2)
- VirtualBox installed (5.0.10)
- make installed (3.81)
The disclosures in the brackets are my current versions. Mac OS X user need to have Command Line Tools installed!
Folder and file structure
. ├── Makefile ├── Vagrantfile ├── inventory ├── playbook.yml └── roles └── common └── tasks └── main.yml
File contents
help: @echo "Run make <target> with:" @echo " > start : to create vm via vagrant" @echo " > provisioning : to start ansible on vm" @echo " > kill : to stop and destroy vm" start: vagrant up provisioning: ansible-playbook -i inventory playbook.yml kill: vagrant destroy -f
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "demo/centos7" config.vm.provider "virtualbox" do |vb| vb.name = "Vagrant-Ansible" end config.vm.provision "ansible" do |ansible| # ansible.verbose = "v" ansible.playbook = "playbook.yml" end end
[vagrant-example] 127.0.0.1 ansible_ssh_user=vagrant ansible_ssh_port=2222 ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key
--- - hosts: all become: yes gather_facts: yes roles: - common
--- - name: upgrade all packages via yum yum: name=* state=latest when: (ansible_distribution == 'CentOS') or (ansible_distribution == 'Red Hat Enterprise Linux') tags: - common - name: upgrade all packages via apt apt: upgrade=dist when: (ansible_distribution == 'Debian') or (ansible_distribution == 'Ubuntu') tags: - common
Little hint
If you do not know the path for ansible_ssh_private_key_file, just type $ vagrant ssh-config!
PyCharm – External Tools
In the last step we configure the PyCharm (External Tools). We do this for every command from Makefile exept help.