summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/oscp14
-rwxr-xr-xbin/ossh15
-rw-r--r--roles/openshift_ansible_inventory/tasks/main.yml19
-rw-r--r--roles/openshift_ansible_inventory/templates/multi_ec2.yaml.j21
4 files changed, 36 insertions, 13 deletions
diff --git a/bin/oscp b/bin/oscp
index 461ad0a0f..68691ec22 100755
--- a/bin/oscp
+++ b/bin/oscp
@@ -32,10 +32,10 @@ class Oscp(object):
self.aws = awsutil.AwsUtil(self.inventory)
# get a dict of host inventory
- if self.args.list:
- self.get_hosts()
- else:
+ if self.args.refresh_cache:
self.get_hosts(True)
+ else:
+ self.get_hosts()
if (self.args.src == '' or self.args.dest == '') and not self.args.list:
self.parser.print_help()
@@ -68,6 +68,8 @@ class Oscp(object):
action="store_true", help="debug mode")
parser.add_argument('-v', '--verbose', default=False,
action="store_true", help="Verbose?")
+ parser.add_argument('--refresh-cache', default=False,
+ action="store_true", help="Force a refresh on the host cache.")
parser.add_argument('--list', default=False,
action="store_true", help="list out hosts")
parser.add_argument('-r', '--recurse', action='store_true', default=False,
@@ -119,14 +121,14 @@ class Oscp(object):
else:
self.env = None
- def get_hosts(self, cache_only=False):
+ def get_hosts(self, refresh_cache=False):
'''Query our host inventory and return a dict where the format
equals:
dict['environment'] = [{'servername' : {}}, ]
'''
- if cache_only:
- self.host_inventory = self.aws.build_host_dict_by_env(['--cache-only'])
+ if refresh_cache:
+ self.host_inventory = self.aws.build_host_dict_by_env(['--refresh-cache'])
else:
self.host_inventory = self.aws.build_host_dict_by_env()
diff --git a/bin/ossh b/bin/ossh
index c16ea6eda..196430e13 100755
--- a/bin/ossh
+++ b/bin/ossh
@@ -28,11 +28,10 @@ class Ossh(object):
self.aws = awsutil.AwsUtil(self.inventory)
- # get a dict of host inventory
- if self.args.list:
- self.get_hosts()
- else:
+ if self.args.refresh_cache:
self.get_hosts(True)
+ else:
+ self.get_hosts()
# parse host and user
self.process_host()
@@ -67,6 +66,8 @@ class Ossh(object):
action="store_true", help="debug mode")
parser.add_argument('-v', '--verbose', default=False,
action="store_true", help="Verbose?")
+ parser.add_argument('--refresh-cache', default=False,
+ action="store_true", help="Force a refresh on the host cache.")
parser.add_argument('--list', default=False,
action="store_true", help="list out hosts")
parser.add_argument('-c', '--command', action='store',
@@ -109,14 +110,14 @@ class Ossh(object):
if self.args.login_name:
self.user = self.args.login_name
- def get_hosts(self, cache_only=False):
+ def get_hosts(self, refresh_cache=False):
'''Query our host inventory and return a dict where the format
equals:
dict['servername'] = dns_name
'''
- if cache_only:
- self.host_inventory = self.aws.build_host_dict_by_env(['--cache-only'])
+ if refresh_cache:
+ self.host_inventory = self.aws.build_host_dict_by_env(['--refresh-cache'])
else:
self.host_inventory = self.aws.build_host_dict_by_env()
diff --git a/roles/openshift_ansible_inventory/tasks/main.yml b/roles/openshift_ansible_inventory/tasks/main.yml
index dddfe24e3..91c96d827 100644
--- a/roles/openshift_ansible_inventory/tasks/main.yml
+++ b/roles/openshift_ansible_inventory/tasks/main.yml
@@ -24,6 +24,14 @@
owner: root
group: libra_ops
+# This cron uses the above location to call its job
+- name: Cron to keep cache fresh
+ cron:
+ name: 'multi_ec2_inventory'
+ minute: '*/10'
+ job: '/usr/share/ansible/inventory/multi_ec2.py --refresh-cache &> /dev/null'
+ when: oo_cron_refresh_cache is defined and oo_cron_refresh_cache
+
- lineinfile:
dest: /etc/ansible/ansible.cfg
backrefs: yes
@@ -43,3 +51,14 @@
regexp: '^destination_format_tags *='
line: "destination_format_tags = {{ oo_ec2_destination_format_tags }}"
when: oo_ec2_destination_format_tags is defined
+
+- name: Set cache location
+ file:
+ state: directory
+ dest: "{{ oo_inventory_cache_location | dirname }}"
+ owner: root
+ group: libra_ops
+ recurse: yes
+ mode: '2750'
+ when: oo_inventory_cache_location is defined
+
diff --git a/roles/openshift_ansible_inventory/templates/multi_ec2.yaml.j2 b/roles/openshift_ansible_inventory/templates/multi_ec2.yaml.j2
index 23dfe73b8..f7005ff5b 100644
--- a/roles/openshift_ansible_inventory/templates/multi_ec2.yaml.j2
+++ b/roles/openshift_ansible_inventory/templates/multi_ec2.yaml.j2
@@ -1,5 +1,6 @@
# multi ec2 inventory configs
cache_max_age: {{ oo_inventory_cache_max_age }}
+cache_location: {{ oo_inventory_cache_location | default('~/.ansible/tmp/multi_ec2_inventory.cache') }}
accounts:
{% for account in oo_inventory_accounts %}
- name: {{ account.name }}