Как направить определенные хосты в host_group к различным файлам var?

Вот рекурсивный и итеративный способ сделать это. Итеративный немного быстрее в зависимости от количества выполнения.

def base62_encode_r(dec):
    s = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    return s[dec] if dec < 62 else base62_encode_r(dec / 62) + s[dec % 62]
print base62_encode_r(2347878234)

def base62_encode_i(dec):
    s = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    ret = ''
    while dec > 0:
        ret = s[dec % 62] + ret
        dec /= 62
    return ret
print base62_encode_i(2347878234)

def base62_decode_r(b62):
    s = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    if len(b62) == 1:
        return s.index(b62)
    x = base62_decode_r(b62[:-1]) * 62 + s.index(b62[-1:]) % 62
    return x
print base62_decode_r("2yTsnM")

def base62_decode_i(b62):
    s = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    ret = 0
    for i in xrange(len(b62)-1,-1,-1):
        ret = ret + s.index(b62[i]) * (62**(len(b62)-i-1))
    return ret
print base62_decode_i("2yTsnM")

if __name__ == '__main__':
    import timeit
    print(timeit.timeit(stmt="base62_encode_r(2347878234)", setup="from __main__ import base62_encode_r", number=100000))
    print(timeit.timeit(stmt="base62_encode_i(2347878234)", setup="from __main__ import base62_encode_i", number=100000))
    print(timeit.timeit(stmt="base62_decode_r('2yTsnM')", setup="from __main__ import base62_decode_r", number=100000))
    print(timeit.timeit(stmt="base62_decode_i('2yTsnM')", setup="from __main__ import base62_decode_i", number=100000))

0.270266867033
0.260915645986
0.344734796766
0.311662500262
0
задан Prarthana Shedge 31 March 2019 в 01:01
поделиться

1 ответ

Вариант может быть условно include_vars . (Только vars / main.yml загружается автоматически.)

Импортировать tasks / vars.yml в качестве первой задачи в tasks / main.yml

- import_tasks: vars.yml

и создать tasks / vars.yml

- include_vars: main_R1.yaml
  when: ansible_hostname == "198.51.100.2"
- include_vars: main_R2.yaml
  when: ansible_hostname == "198.51.100.3"

Более гибким вариантом будет сопоставление таких хостов и файлов

my_host_vars:
  - {host: "198.51.100.2", vars: "main_R2.yaml"}
  - {host: "198.51.100.3", vars: "main_R3.yaml"}

и include_vars в цикле в task / vars.yml

[ 113]

Если вы можете переименовывать и перемещать файлы var "Предпочтительной практикой в ​​Ansible является" Разделение данных, относящихся к хосту и группе . Необходимо понимать довольно сложный приоритет переменной: куда мне поместить переменную? .

0
ответ дан Vladimir Botka 31 March 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: