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)
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)
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()
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()