mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-04 23:44:00 -07:00
add apt_key module
Pretty straightforward. Give it a URL with an exported GPG key for signing an Apt repository. It downloads it and will install it using apt-key. It's even smart enough to tell if it's already there (i.e. actually tells you if it changed or not).
This commit is contained in:
parent
f86974fdae
commit
ad6373430b
3 changed files with 408 additions and 0 deletions
|
@ -10,6 +10,7 @@ import os
|
|||
import shutil
|
||||
import time
|
||||
import tempfile
|
||||
import urllib2
|
||||
|
||||
from nose.plugins.skip import SkipTest
|
||||
|
||||
|
@ -288,3 +289,64 @@ class TestRunner(unittest.TestCase):
|
|||
])
|
||||
print result
|
||||
assert result['changed'] == False
|
||||
|
||||
def test_apt_key(self):
|
||||
try:
|
||||
key_file = self._get_test_file("apt_key.gpg")
|
||||
key_file_url = 'file://' + urllib2.quote(key_file)
|
||||
key_id = '473041FA'
|
||||
|
||||
os.environ['ANSIBLE_TEST_APT_KEY'] = 'none'
|
||||
# key missing, should download and add
|
||||
result = self._run('apt_key', ['state=present', 'url=' + key_file_url])
|
||||
assert 'failed' not in result
|
||||
assert result['added'] == 1
|
||||
assert result['downloaded'] == 1
|
||||
assert result['removed'] == 0
|
||||
assert result['changed']
|
||||
|
||||
os.environ["ANSIBLE_TEST_APT_KEY"] = key_id
|
||||
# key missing, shouldn't download, no changes
|
||||
result = self._run('apt_key', ['id=12345678', 'state=absent', 'url=' + key_file_url])
|
||||
assert 'failed' not in result
|
||||
assert result['added'] == 0
|
||||
assert result['downloaded'] == 0
|
||||
assert result['removed'] == 0
|
||||
assert not result['changed']
|
||||
# key missing, should download and fail sanity check, no changes
|
||||
result = self._run('apt_key', ['id=12345678', 'state=present', 'url=' + key_file_url])
|
||||
assert 'failed' in result
|
||||
assert result['added'] == 0
|
||||
assert result['downloaded'] == 1
|
||||
assert result['removed'] == 0
|
||||
# key present, shouldn't download, no changes
|
||||
result = self._run('apt_key', ['id=' + key_id, 'state=present', 'url=' + key_file_url])
|
||||
assert 'failed' not in result
|
||||
assert result['added'] == 0
|
||||
assert result['downloaded'] == 0
|
||||
assert result['removed'] == 0
|
||||
assert not result['changed']
|
||||
# key present, should download to get key id
|
||||
result = self._run('apt_key', ['state=present', 'url=' + key_file_url])
|
||||
assert 'failed' not in result
|
||||
assert result['added'] == 0
|
||||
assert result['downloaded'] == 1
|
||||
assert result['removed'] == 0
|
||||
assert not result['changed']
|
||||
# key present, should download to get key id and remove
|
||||
result = self._run('apt_key', ['state=absent', 'url=' + key_file_url])
|
||||
assert 'failed' not in result
|
||||
assert result['added'] == 0
|
||||
assert result['downloaded'] == 1
|
||||
assert result['removed'] == 1
|
||||
assert result['changed']
|
||||
# key present, should remove but not download
|
||||
result = self._run('apt_key', ['id=' + key_id, 'state=absent', 'url=' + key_file_url])
|
||||
assert 'failed' not in result
|
||||
assert result['added'] == 0
|
||||
assert result['downloaded'] == 0
|
||||
assert result['removed'] == 1
|
||||
assert result['changed']
|
||||
finally:
|
||||
# always clean up the environment
|
||||
os.environ.pop('ANSIBLE_TEST_APT_KEY', None)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue