コード例 #1
0
def main():
    update_ssh_config()
    
    import ans_module
    prefix = os.path.expanduser("~/.ssh")
    
    # :KLUDGE: очень большое желание переписать самому, потому что
    # способа включать только НЕ вида *.old напрямую нет, хотя казалось бы - 
    # естественное желание; логика - либо нет точек, либо есть (одна), после нее
    # нет old, затем может быть что-то, но без точек
    regexp=r"(?P<a>^[^.]+$)|(?P<b>\.(?!old)[^.]*$)"

    ans_module.run_api("assemble", src=os.path.join(prefix, "config.d"), dest=os.path.join(prefix, "config"),
                       backup=True, delimiter='\n### START FRAGMENT ###\n\n',
                       regexp=regexp)
コード例 #2
0
def main():
    update_ssh_config()

    import ans_module
    prefix = os.path.expanduser("~/.ssh")

    # :KLUDGE: очень большое желание переписать самому, потому что
    # способа включать только НЕ вида *.old напрямую нет, хотя казалось бы -
    # естественное желание; логика - либо нет точек, либо есть (одна), после нее
    # нет old, затем может быть что-то, но без точек
    regexp = r"(?P<a>^[^.]+$)|(?P<b>\.(?!old)[^.]*$)"

    ans_module.run_api("assemble",
                       src=os.path.join(prefix, "config.d"),
                       dest=os.path.join(prefix, "config"),
                       backup=True,
                       delimiter='\n### START FRAGMENT ###\n\n',
                       regexp=regexp)
コード例 #3
0
ファイル: setup_container.py プロジェクト: muravjov/disvolvu
def setup(cont_name, keyfile, image, need_install_python=False, **kwargs):
    with open(keyfile) as f:
        pub_key = f.read()

    # добавляем директорию ansible_plugins в список, где искать доп. расширения
    # (до run_api())
    from ansible import utils
    import o_p
    import os
    get_par = os.path.dirname
    utils.plugins.push_basedir(o_p.join(get_par(get_par(__file__)), "ansible_plugins"))

    import ans_module
    labels = {
        "disvolvu": "test"
    }    
    # настраиваем docker без with_sudo=True
    res = ans_module.run_api("docker", name=cont_name, image=image,
                             labels=labels, docker_api_version="auto", **kwargs)
    assert res
    
    client = create_dclient()
    cont = find_container(cont_name, client)
    assert cont
    ip_addr = update_ssh_config.get_ipaddr(cont, client)
    #print(ip_addr)
    
    # удаляем предыдущий возможный fingerprint
    known_hosts = os.path.expanduser("~/.ssh/known_hosts")
    run_command("""ssh-keygen -f "%(known_hosts)s" -R %(ip_addr)s""" % locals())
    
    # добавляем SSH-публичный ключ хоста в known_hosts, чтобы
    # ssh не ругался при неинтерактивном соединении
    from ansible.module_utils.known_hosts import add_git_host_key
    
    # :TRICKY: настраиваем фейковый модуль
    from ansible.module_utils.basic import AnsibleModule
    ans_module.setup_module_arguments(None)
    fake_module = AnsibleModule({})
    
    # :KLUDGE: сделать нормальную функцию без имитации git-адреса
    add_git_host_key(fake_module, "git@%(ip_addr)s/" % locals())
    
    # 
    standard_password = "******"
    
    if need_install_python:
        run_command("sshpass -p %(standard_password)s ssh root@%(ip_addr)s apt-get -y install python" % locals())
    
    # в Ubuntu пакет python уже есть, поэтому
    # сразу к делу - authorized_key
    run_module([
        {
            "host": ip_addr,
            "settings": {
                "ansible_ssh_user": "******",
                "ansible_ssh_pass": "******"
            },
            
        },
    ], "authorized_key", '', user="******", key=pub_key)
    
    update_ssh_config.main()
コード例 #4
0
ファイル: setup_container.py プロジェクト: muravjov/disvolvu
def setup(cont_name, keyfile, image, need_install_python=False, **kwargs):
    with open(keyfile) as f:
        pub_key = f.read()

    # добавляем директорию ansible_plugins в список, где искать доп. расширения
    # (до run_api())
    from ansible import utils
    import o_p
    import os
    get_par = os.path.dirname
    utils.plugins.push_basedir(
        o_p.join(get_par(get_par(__file__)), "ansible_plugins"))

    import ans_module
    labels = {"disvolvu": "test"}
    # настраиваем docker без with_sudo=True
    res = ans_module.run_api("docker",
                             name=cont_name,
                             image=image,
                             labels=labels,
                             docker_api_version="auto",
                             **kwargs)
    assert res

    client = create_dclient()
    cont = find_container(cont_name, client)
    assert cont
    ip_addr = update_ssh_config.get_ipaddr(cont, client)
    #print(ip_addr)

    # удаляем предыдущий возможный fingerprint
    known_hosts = os.path.expanduser("~/.ssh/known_hosts")
    run_command("""ssh-keygen -f "%(known_hosts)s" -R %(ip_addr)s""" %
                locals())

    # добавляем SSH-публичный ключ хоста в known_hosts, чтобы
    # ssh не ругался при неинтерактивном соединении
    from ansible.module_utils.known_hosts import add_git_host_key

    # :TRICKY: настраиваем фейковый модуль
    from ansible.module_utils.basic import AnsibleModule
    ans_module.setup_module_arguments(None)
    fake_module = AnsibleModule({})

    # :KLUDGE: сделать нормальную функцию без имитации git-адреса
    add_git_host_key(fake_module, "git@%(ip_addr)s/" % locals())

    #
    standard_password = "******"

    if need_install_python:
        run_command(
            "sshpass -p %(standard_password)s ssh root@%(ip_addr)s apt-get -y install python"
            % locals())

    # в Ubuntu пакет python уже есть, поэтому
    # сразу к делу - authorized_key
    run_module([
        {
            "host": ip_addr,
            "settings": {
                "ansible_ssh_user": "******",
                "ansible_ssh_pass": "******"
            },
        },
    ],
               "authorized_key",
               '',
               user="******",
               key=pub_key)

    update_ssh_config.main()