Ansible: playbook name and task step index on variables
up vote
0
down vote
favorite
In my playbook I have several shell task per playbook, like ten or more. I want to use creates shell arg to avoid executing them over and over.
Currently I have this:
- name: Download sonar-runner
get_url:
url: http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar- runner-dist/2.4/sonar-runner-dist-2.4.zip
dest: /tmp
mode: 0755
- name: Unarchive
unarchive:
src: /tmp/sonar-runner-dist-2.4.zip
dest: /opt/tools/sonar-runner-2.4
- name: Sym link
shell: ln -s sonar-runner-2.4 sonar-runner
args:
creates: ~/.ansible/sonar-runner.task/step.3
- name: Configure profile
shell: |
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/' > /etc/profile.d/maven.sh
echo 'export M2_HOME=/opt/maven/apache-maven-3.5.3' >> /etc/profile.d/maven.sh
echo 'export PATH=${M2_HOME}/bin:${PATH}' >> /etc/profile.d/maven.sh
args:
creates: ~/.ansible/sonar-runner.task/step.4
Is there any way to achieve this using variables. I'm thinking something like this:
- name: Sym link
shell: ln -s sonar-runner-2.4 sonar-runner
args:
creates: ~/.ansible/{{playbook_name}}/{{task_index}}
- name: Configure profile
shell: |
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/' > /etc/profile.d/maven.sh
echo 'export M2_HOME=/opt/maven/apache-maven-3.5.3' >> /etc/profile.d/maven.sh
echo 'export PATH=${M2_HOME}/bin:${PATH}' >> /etc/profile.d/maven.sh
args:
creates: ~/.ansible/{{playbook_name}}/{{task_index}}
Is there any way to do this? Am I missing something? Or isn't that the way Ansible works?
ansible
add a comment |
up vote
0
down vote
favorite
In my playbook I have several shell task per playbook, like ten or more. I want to use creates shell arg to avoid executing them over and over.
Currently I have this:
- name: Download sonar-runner
get_url:
url: http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar- runner-dist/2.4/sonar-runner-dist-2.4.zip
dest: /tmp
mode: 0755
- name: Unarchive
unarchive:
src: /tmp/sonar-runner-dist-2.4.zip
dest: /opt/tools/sonar-runner-2.4
- name: Sym link
shell: ln -s sonar-runner-2.4 sonar-runner
args:
creates: ~/.ansible/sonar-runner.task/step.3
- name: Configure profile
shell: |
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/' > /etc/profile.d/maven.sh
echo 'export M2_HOME=/opt/maven/apache-maven-3.5.3' >> /etc/profile.d/maven.sh
echo 'export PATH=${M2_HOME}/bin:${PATH}' >> /etc/profile.d/maven.sh
args:
creates: ~/.ansible/sonar-runner.task/step.4
Is there any way to achieve this using variables. I'm thinking something like this:
- name: Sym link
shell: ln -s sonar-runner-2.4 sonar-runner
args:
creates: ~/.ansible/{{playbook_name}}/{{task_index}}
- name: Configure profile
shell: |
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/' > /etc/profile.d/maven.sh
echo 'export M2_HOME=/opt/maven/apache-maven-3.5.3' >> /etc/profile.d/maven.sh
echo 'export PATH=${M2_HOME}/bin:${PATH}' >> /etc/profile.d/maven.sh
args:
creates: ~/.ansible/{{playbook_name}}/{{task_index}}
Is there any way to do this? Am I missing something? Or isn't that the way Ansible works?
ansible
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
In my playbook I have several shell task per playbook, like ten or more. I want to use creates shell arg to avoid executing them over and over.
Currently I have this:
- name: Download sonar-runner
get_url:
url: http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar- runner-dist/2.4/sonar-runner-dist-2.4.zip
dest: /tmp
mode: 0755
- name: Unarchive
unarchive:
src: /tmp/sonar-runner-dist-2.4.zip
dest: /opt/tools/sonar-runner-2.4
- name: Sym link
shell: ln -s sonar-runner-2.4 sonar-runner
args:
creates: ~/.ansible/sonar-runner.task/step.3
- name: Configure profile
shell: |
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/' > /etc/profile.d/maven.sh
echo 'export M2_HOME=/opt/maven/apache-maven-3.5.3' >> /etc/profile.d/maven.sh
echo 'export PATH=${M2_HOME}/bin:${PATH}' >> /etc/profile.d/maven.sh
args:
creates: ~/.ansible/sonar-runner.task/step.4
Is there any way to achieve this using variables. I'm thinking something like this:
- name: Sym link
shell: ln -s sonar-runner-2.4 sonar-runner
args:
creates: ~/.ansible/{{playbook_name}}/{{task_index}}
- name: Configure profile
shell: |
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/' > /etc/profile.d/maven.sh
echo 'export M2_HOME=/opt/maven/apache-maven-3.5.3' >> /etc/profile.d/maven.sh
echo 'export PATH=${M2_HOME}/bin:${PATH}' >> /etc/profile.d/maven.sh
args:
creates: ~/.ansible/{{playbook_name}}/{{task_index}}
Is there any way to do this? Am I missing something? Or isn't that the way Ansible works?
ansible
In my playbook I have several shell task per playbook, like ten or more. I want to use creates shell arg to avoid executing them over and over.
Currently I have this:
- name: Download sonar-runner
get_url:
url: http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar- runner-dist/2.4/sonar-runner-dist-2.4.zip
dest: /tmp
mode: 0755
- name: Unarchive
unarchive:
src: /tmp/sonar-runner-dist-2.4.zip
dest: /opt/tools/sonar-runner-2.4
- name: Sym link
shell: ln -s sonar-runner-2.4 sonar-runner
args:
creates: ~/.ansible/sonar-runner.task/step.3
- name: Configure profile
shell: |
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/' > /etc/profile.d/maven.sh
echo 'export M2_HOME=/opt/maven/apache-maven-3.5.3' >> /etc/profile.d/maven.sh
echo 'export PATH=${M2_HOME}/bin:${PATH}' >> /etc/profile.d/maven.sh
args:
creates: ~/.ansible/sonar-runner.task/step.4
Is there any way to achieve this using variables. I'm thinking something like this:
- name: Sym link
shell: ln -s sonar-runner-2.4 sonar-runner
args:
creates: ~/.ansible/{{playbook_name}}/{{task_index}}
- name: Configure profile
shell: |
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/' > /etc/profile.d/maven.sh
echo 'export M2_HOME=/opt/maven/apache-maven-3.5.3' >> /etc/profile.d/maven.sh
echo 'export PATH=${M2_HOME}/bin:${PATH}' >> /etc/profile.d/maven.sh
args:
creates: ~/.ansible/{{playbook_name}}/{{task_index}}
Is there any way to do this? Am I missing something? Or isn't that the way Ansible works?
ansible
ansible
asked Nov 22 at 15:22
Jose Juan Calderon Viedma
105
105
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
Is there any way to do this? Am I missing something? Or isn't that the way Ansible works?
Yes, yes, and no :-)
Is there any way to do this?
The shell:
and command:
support inline creates=
declarations, so you can keep all of that together in one block (and thus it is a candidate for being a variable, or a yaml anchor):
- shell: |
creates=/etc/profile.d/maven.sh
echo 'hello' > /etc/profile.d/maven.sh
- command: |
creates=/etc/profile.d/maven.sh
cp /something /etc/profile.d/maven.sh
However, I just told you that for your information, and for the circumstances where these next set of steps won't work because ...
Am I missing something?
You want to use the built-in idempotency whenever possible, to get you out of the business of having to do manual "has this task run" bookkeeping. Thus:
- file:
src: sonar-runner-2.4
dest: sonar-runner
state: link
- copy:
dest: /etc/profile.d/maven.sh
content: |
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export M2_HOME=/opt/maven/apache-maven-3.5.3
export PATH=${M2_HOME}/bin:${PATH}
I'm genuinely surprised ansible didn't whine when you tried to use ln
manually, as it knows about common shell commands and will nudge you to switch to the built-in module file:
The playbook posted was a section of a larger one. I guess some of the shell calls could be replaced with ansible modules but not all of them. I was looking for a way to make things easier when the bookkeping is unavoidable.
– Jose Juan Calderon Viedma
Nov 23 at 13:01
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
Is there any way to do this? Am I missing something? Or isn't that the way Ansible works?
Yes, yes, and no :-)
Is there any way to do this?
The shell:
and command:
support inline creates=
declarations, so you can keep all of that together in one block (and thus it is a candidate for being a variable, or a yaml anchor):
- shell: |
creates=/etc/profile.d/maven.sh
echo 'hello' > /etc/profile.d/maven.sh
- command: |
creates=/etc/profile.d/maven.sh
cp /something /etc/profile.d/maven.sh
However, I just told you that for your information, and for the circumstances where these next set of steps won't work because ...
Am I missing something?
You want to use the built-in idempotency whenever possible, to get you out of the business of having to do manual "has this task run" bookkeeping. Thus:
- file:
src: sonar-runner-2.4
dest: sonar-runner
state: link
- copy:
dest: /etc/profile.d/maven.sh
content: |
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export M2_HOME=/opt/maven/apache-maven-3.5.3
export PATH=${M2_HOME}/bin:${PATH}
I'm genuinely surprised ansible didn't whine when you tried to use ln
manually, as it knows about common shell commands and will nudge you to switch to the built-in module file:
The playbook posted was a section of a larger one. I guess some of the shell calls could be replaced with ansible modules but not all of them. I was looking for a way to make things easier when the bookkeping is unavoidable.
– Jose Juan Calderon Viedma
Nov 23 at 13:01
add a comment |
up vote
0
down vote
Is there any way to do this? Am I missing something? Or isn't that the way Ansible works?
Yes, yes, and no :-)
Is there any way to do this?
The shell:
and command:
support inline creates=
declarations, so you can keep all of that together in one block (and thus it is a candidate for being a variable, or a yaml anchor):
- shell: |
creates=/etc/profile.d/maven.sh
echo 'hello' > /etc/profile.d/maven.sh
- command: |
creates=/etc/profile.d/maven.sh
cp /something /etc/profile.d/maven.sh
However, I just told you that for your information, and for the circumstances where these next set of steps won't work because ...
Am I missing something?
You want to use the built-in idempotency whenever possible, to get you out of the business of having to do manual "has this task run" bookkeeping. Thus:
- file:
src: sonar-runner-2.4
dest: sonar-runner
state: link
- copy:
dest: /etc/profile.d/maven.sh
content: |
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export M2_HOME=/opt/maven/apache-maven-3.5.3
export PATH=${M2_HOME}/bin:${PATH}
I'm genuinely surprised ansible didn't whine when you tried to use ln
manually, as it knows about common shell commands and will nudge you to switch to the built-in module file:
The playbook posted was a section of a larger one. I guess some of the shell calls could be replaced with ansible modules but not all of them. I was looking for a way to make things easier when the bookkeping is unavoidable.
– Jose Juan Calderon Viedma
Nov 23 at 13:01
add a comment |
up vote
0
down vote
up vote
0
down vote
Is there any way to do this? Am I missing something? Or isn't that the way Ansible works?
Yes, yes, and no :-)
Is there any way to do this?
The shell:
and command:
support inline creates=
declarations, so you can keep all of that together in one block (and thus it is a candidate for being a variable, or a yaml anchor):
- shell: |
creates=/etc/profile.d/maven.sh
echo 'hello' > /etc/profile.d/maven.sh
- command: |
creates=/etc/profile.d/maven.sh
cp /something /etc/profile.d/maven.sh
However, I just told you that for your information, and for the circumstances where these next set of steps won't work because ...
Am I missing something?
You want to use the built-in idempotency whenever possible, to get you out of the business of having to do manual "has this task run" bookkeeping. Thus:
- file:
src: sonar-runner-2.4
dest: sonar-runner
state: link
- copy:
dest: /etc/profile.d/maven.sh
content: |
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export M2_HOME=/opt/maven/apache-maven-3.5.3
export PATH=${M2_HOME}/bin:${PATH}
I'm genuinely surprised ansible didn't whine when you tried to use ln
manually, as it knows about common shell commands and will nudge you to switch to the built-in module file:
Is there any way to do this? Am I missing something? Or isn't that the way Ansible works?
Yes, yes, and no :-)
Is there any way to do this?
The shell:
and command:
support inline creates=
declarations, so you can keep all of that together in one block (and thus it is a candidate for being a variable, or a yaml anchor):
- shell: |
creates=/etc/profile.d/maven.sh
echo 'hello' > /etc/profile.d/maven.sh
- command: |
creates=/etc/profile.d/maven.sh
cp /something /etc/profile.d/maven.sh
However, I just told you that for your information, and for the circumstances where these next set of steps won't work because ...
Am I missing something?
You want to use the built-in idempotency whenever possible, to get you out of the business of having to do manual "has this task run" bookkeeping. Thus:
- file:
src: sonar-runner-2.4
dest: sonar-runner
state: link
- copy:
dest: /etc/profile.d/maven.sh
content: |
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export M2_HOME=/opt/maven/apache-maven-3.5.3
export PATH=${M2_HOME}/bin:${PATH}
I'm genuinely surprised ansible didn't whine when you tried to use ln
manually, as it knows about common shell commands and will nudge you to switch to the built-in module file:
answered Nov 22 at 17:54
Matthew L Daniel
7,00112326
7,00112326
The playbook posted was a section of a larger one. I guess some of the shell calls could be replaced with ansible modules but not all of them. I was looking for a way to make things easier when the bookkeping is unavoidable.
– Jose Juan Calderon Viedma
Nov 23 at 13:01
add a comment |
The playbook posted was a section of a larger one. I guess some of the shell calls could be replaced with ansible modules but not all of them. I was looking for a way to make things easier when the bookkeping is unavoidable.
– Jose Juan Calderon Viedma
Nov 23 at 13:01
The playbook posted was a section of a larger one. I guess some of the shell calls could be replaced with ansible modules but not all of them. I was looking for a way to make things easier when the bookkeping is unavoidable.
– Jose Juan Calderon Viedma
Nov 23 at 13:01
The playbook posted was a section of a larger one. I guess some of the shell calls could be replaced with ansible modules but not all of them. I was looking for a way to make things easier when the bookkeping is unavoidable.
– Jose Juan Calderon Viedma
Nov 23 at 13:01
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53434037%2fansible-playbook-name-and-task-step-index-on-variables%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown