Skip to content
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

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

matburt
Copy link
Member

@matburt matburt commented Jun 1, 2023

… 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?

with open(inventory_spec) as f:
inventory_data = f.read()
return inventory_data
return inventory_spec
Copy link
Contributor

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

def collect_ansible_facts(inventory: str) -> List[Dict]:

Copy link
Member Author

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.

Copy link
Contributor

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

Copy link
Member Author

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.

mkanoor added a commit to mkanoor/ansible-rulebook that referenced this pull request Jun 29, 2023
mkanoor added a commit that referenced this pull request Aug 21, 2023
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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants