diff options
| -rwxr-xr-x | bin/oscp | 14 | ||||
| -rwxr-xr-x | bin/ossh | 15 | ||||
| -rw-r--r-- | roles/openshift_ansible_inventory/tasks/main.yml | 19 | ||||
| -rw-r--r-- | roles/openshift_ansible_inventory/templates/multi_ec2.yaml.j2 | 1 | 
4 files changed, 36 insertions, 13 deletions
@@ -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() @@ -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 }}  | 
