diff --git a/.travis.yml b/.travis.yml index f8d9b4ccffbf43047d56cf514fadac92e6ac2b35..f89e09380cf2ac3f66fb9d3f8f7253cd4db83d4a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,13 +9,10 @@ env: - VBOX_MEMORY=2048 - VBOX_HWVIRTEX=off matrix: - - TOXENV=openbsd60 - TOXENV=xenial - TOXENV=trusty - - TOXENV=precise - &stretch TOXENV=stretch - &jessie TOXENV=jessie - - TOXENV=wheezy cache: - pip diff --git a/README.rst b/README.rst index d50fb09c8eb2981fc3817e27116a87b161505707..f3ecfc6d27aaf6ed0241ffce7050bc96f702e94d 100644 --- a/README.rst +++ b/README.rst @@ -1,12 +1,10 @@ -Example +Node.js ####### -.. image:: https://travis-ci.org/adarnimrod/example.svg?branch=master - :target: https://travis-ci.org/adarnimrod/example +.. image:: https://travis-ci.org/adarnimrod/nodejs.svg?branch=master + :target: https://travis-ci.org/adarnimrod/nodejs -An (empty) example Ansible role complete with working tests out of the box. For -more information read the `blog post -<https://www.shore.co.il/blog/ansible-example-role/>`_. +Install Node.js on Debian or Ubuntu from packages in NodeSource' repository. Requirements ------------ diff --git a/defaults/main.yml b/defaults/main.yml index 0a97962c3b635cf908e8e45d5171b0aa8b7f3d92..a5a99749bd275d9fa68285b47129b153b7672827 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,2 +1,4 @@ --- -# defaults file for example +# defaults file for nodejs + +nodejs_version: 8 # or 6. diff --git a/handlers/main.yml b/handlers/main.yml index bd0df0d80d6094e097cca7760cd1b12a480df33c..7c65bbdbceea5e7522a1a41a9ef8d2fd9843a1ee 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,2 +1,2 @@ --- -# handlers file for example +# handlers file for nodejs diff --git a/meta/main.yml b/meta/main.yml index d768011e6d12fce30f080f03ab7b77ba904b9936..e3c47eda36e55e0ee62082114608afddb15976e3 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -1,22 +1,17 @@ galaxy_info: author: Nimrod Adar - description: An example Ansible role + description: Install Node.js on Debian or Ubuntu from packages in NodeSource' repository company: Shore technologies license: MIT min_ansible_version: 2.3 platforms: - - name: OpenBSD - versions: - - 6.0 - name: Ubuntu versions: - xenial - trusty - - precise - name: Debian versions: - stretch - jessie - - wheezy - galaxy_tags: [ ansible ] + galaxy_tags: [ nodejs ] dependencies: [] diff --git a/molecule.yml b/molecule.yml index 013e6c74fae3489b9dbc47190b543b6c24140577..81f9e3cc0927fded6f1af2b1fc71db1a0c732c68 100644 --- a/molecule.yml +++ b/molecule.yml @@ -35,7 +35,7 @@ vagrant: - name: wheezy box: bmorg/debian-wheezy-i386 instances: - - name: example + - name: nodejs options: append_platform_to_hostname: yes raw_config_args: diff --git a/tasks/main.yml b/tasks/main.yml index 0ab13c50f3aa88dc431f5b1d4f26744bb1db3bf9..d522eed98dce07ec04f969cfe2aade9312537762 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,8 +1,35 @@ --- -# tasks file for example +# tasks file for nodejs - name: Assertions assert: that: - - ansible_os_family in ['OpenBSD', 'Debian'] - - ansible_distribution_release in ['xenial', 'trusty', 'precise', 'stretch', 'jessie', 'wheezy'] or ansible_distribution_version in ['6.0'] + - ansible_os_family == 'Debian' + - ansible_lsb.codename in ['buster', 'jessie', 'sid', 'stretch', 'trusty', 'xenial', 'yakkety', 'zesty'] + - nodejs_version in [6, 8] + +- name: APT install prerequisites + apt: + name: apt-transport-https + state: present + update_cache: True + cache_valid_time: 3600 + +- name: Add APT repository key + apt_key: + url: https://deb.nodesource.com/gpgkey/nodesource.gpg.key + state: present + +- name: Add APT repository + apt_repository: + repo: | + deb https://deb.nodesource.com/node_{{ nodejs_version }}.x {{ ansible_lsb.codename }} main + state: present + update_cache: True + +- name: APT install + apt: + name: nodejs + state: present + update_cache: True + cache_valid_time: 3600 diff --git a/tests/playbook.yml b/tests/playbook.yml index 55444f3e9d597410c72104be8cd4b99151243a5a..dcc12fb3158195d903e7455dd88e6ab16383a092 100644 --- a/tests/playbook.yml +++ b/tests/playbook.yml @@ -1,5 +1,5 @@ --- -- hosts: example-openbsd* +- hosts: nodejs-openbsd* gather_facts: false roles: - openbsd-bootstrap @@ -8,7 +8,7 @@ users_use_sudo: True users_lock_root_ssh: False -- hosts: [example-xenial, example-wheezy] +- hosts: [nodejs-xenial, nodejs-wheezy] gather_facts: false roles: - debian-bootstrap @@ -19,4 +19,4 @@ - hosts: all roles: - - role: example + - role: nodejs diff --git a/tests/test_nodejs.py b/tests/test_nodejs.py new file mode 100644 index 0000000000000000000000000000000000000000..0b83ec7822930aacd4d7d75e9cd8086b09cbbe4d --- /dev/null +++ b/tests/test_nodejs.py @@ -0,0 +1,12 @@ +from testinfra.utils.ansible_runner import AnsibleRunner + +testinfra_hosts = AnsibleRunner('.molecule/ansible_inventory').get_hosts('all') + + +def test_nodejs(host): + assert host.run('node --version').rc == 0 + assert host.run('nodejs --version').rc == 0 + + +def test_root(host): + assert host.run('npm --version').rc == 0 diff --git a/tox.ini b/tox.ini index c80d480b6f557c37a14f6ec977a2900494e95d51..2209e501c441b08f025b10dffdd4426594724969 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,7 @@ [tox] skip_install = True skipsdist = True -envlist = openbsd60,xenial,trusty,precise,stretch,jessie,wheezy +envlist = xenial,trusty,stretch,jessie [testenv] envdir = {toxinidir}/.tox/molecule diff --git a/vars/main.yml b/vars/main.yml index 7542f3cf45dd754b408bd13b5c57af85bc3d0fc8..6422ced18a1ca12c4ffcd530e6e140ea5bad0f36 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,2 +1,2 @@ --- -# vars file for example +# vars file for nodejs