Re: aarch64 conditional ansible stanza

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 04/07/2016 04:07 PM, Loic Dachary wrote:

On 07/04/2016 15:58, Thierry Delamare wrote:

On 04/07/2016 08:46 AM, Loic Dachary wrote:
Hi Thierry,

In order to only install a template on architectures that are not aarch64, I changed

- name: Add sources list
    template:
      dest: /etc/apt/sources.list
      src: "../../templates/apt/sources.list.{{ ansible_distribution_release | lower }}"
      owner: root
      group: root
      mode: 0644
    register: sources

into

- name: Add sources list
    template:
      dest: /etc/apt/sources.list
      src: "../../templates/apt/sources.list.{{ ansible_distribution_release | lower }}"
      owner: root
      group: root
      mode: 0644
    register: sources
    when: {{ansible_architecture}} != aarch64

Is there a better way to do that ?
Bonjour Loic,

Using when statement is the correct way to add conditions to a task,
but don't forget that the when clause contains a Jinja2 expression (not like a module argument),
Thus the correct expression should rather be « when: ansible_architecture != 'aarch64' ».
Indeed, the previous attempt failed :-) Here is a more elaborate version that also excludes some packages that are not available in the aarch64 repositories. How does that look ?

https://github.com/ceph/ceph-cm-ansible/pull/224/commits/80e1cb2f3688393f4238268a543e6c3ab19bae75

That looks good to me, but.
You could also use the already existing scheme for defining vars or even including plays depending on distribution or (if you take care of it) architecture. I mean that you could create a roles/testnode/tasks/setup-ubuntu-aarch32.yml with only the needed tasks (instead of conditionally exclude most of them in roles/testnode/tasks/setup-ubuntu.yml) and change roles/testnode/tasks/main.yml to add « - { include: setup-ubuntu-aarch32.yml, when: ansible_distribution == "Ubuntu" and ansible_architecture == 'aarch32' } » (maybe you also want to rename setup-ubuntu.yml as setup-ubuntu-aarch64.yml and change main.yml accordingly) If the common part between aarch32 and aarch64 duplicate to much, keep a common setup-ubuntu. Similarly for packages lists (more usual), add roles/testnode/vars/ubuntu-aarch64.yml and ubuntu-aarch32.yml for respective specific packages and use an include_vars directive using ansible_distribution and ansible_architecture once in roles/testnode/tasks/vars.yml instead of many when clauses.

PS: Maybe you could teach me how to boostrap a working env next time we cowork.


--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux