-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
If we can't find the inventory path, assume we should pass it through… #523
base: main
Are you sure you want to change the base?
Conversation
… verbatim to Runner
with open(inventory_spec) as f: | ||
inventory_data = f.read() | ||
return inventory_data | ||
return inventory_spec |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are you returning the string if the path does not exist? I believe that could generate errors because later the code expects to receive the content of the inventory file, like for example in
ansible-rulebook/ansible_rulebook/util.py
Line 91 in aa7dcef
def collect_ansible_facts(inventory: str) -> List[Dict]: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah this PR is mostly just a discussion point... I'm not sure why we need to parse inventory like this rather than just passing things along in a more idiomatic way to Runner underneath.
This particular PR at least allow ad-hoc inventory to be passed in. There's a ton of logic in Runner and Ansible itself to manage inventory that I don't think ansible-rulebook needs to do much if anything to it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@matburt Based on the inventory notes for the runner should we also allow for an env_var ANSIBLE_INVENTORY to satisfy the --inventory requirement in ansible-rulebook if the rulebook has run_playbook action? That could be the default value for --inventory. It might also help if we can check the value of --inventory to see if its a file/directory/string and then do the needful based on if its
- file that exists get copied to the Ansible-runner inventory project directory
- directory that exists gets copied along with sub directories to the Ansible-runner inventory
- string data gets copied to inventory/hosts file like it does today
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll be honest... I still don't know why we need to introspect the inventory at all here. Just assume that it's being given in a format that makes sense to Ansible and if not then let ansible generate the right error for it.
This is based on PR ansible#523
We don't load the inventory data in ansible-rulebook its passed into the ansible-runner as is. Based on work done in PR #523 #344 https://issues.redhat.com/browse/AAP-7661 Co-authored-by: Alex <[email protected]>
… verbatim to Runner
This isn't an exact solution to #344 but it allows ad-hoc hosts and maybe gets it a little closer. I wonder if it would be better to just let Runner do its own thing?