jenkinsansiblestring-concatenationhosts

Unable to concat two variables along with underscore for ansible hosts


Below is the command generated by ansible plugin for Jenkins.

ansible-playbook /app/stop.yml -i /app/my-hosts -l test_west -e app_name=test -e environments=west -v

Here is my ansible inventory hosts file.

cat my-hosts
[test_west]
10.0.9.88
10.0.9.89

-l option helps match the ansible inventory host file 'test_west'

My question is ... what do I have to mention in the ansible playbook for the hosts ?

My playbook looks like below however this does not seem correct or needed as the hosts are match using the -l paramter passed to ansible:

---
- hosts: "{{ app_name + '_' + environments }}

Can you please suggest what should I set the hosts: to in my ansible playbook so it is the same as -l argument i.e 'test_west' ?


Solution

  • You should use: - hosts: "{{ app_name }}_{{ environments }}"

    Sample output:

    [root@greenhat-30 tests]$ ansible-playbook -i hosts test.yml -e app_name=test -e environments=west
     [WARNING]: Could not match supplied host pattern, ignoring: test_west
    
    
    PLAY [test_west] *******************************************************************************************************************************************************************************************************
    skipping: no hosts matched
    
    PLAY RECAP *************************************************************************************************************************************************************************************************************
    
    [http_offline@greenhat-30 tests]$ 
    

    You can see the group selected is PLAY [test_west].