don-Rumata
ненависть IT ansible То самое чувство, что ты потратил 11 часов на регулярку, которая почему-то не работает, хотя она элементарнее некуда, даже в оф. документации упоминается. Перерыл гугл, яндекс и SO. Чтобы выяснить, что ты дёргал не тот кусок кода.
don-Rumata
soft IT RL сеть ansible Перефразируя одну цитату:

— Что ты делал до того как начал ковырять ansible?
— Винду настраивал, софт ставил.
— А теперь?
— Винду настраиваю, софт ставлю.
— А что поменялось?
— Да всё.
Ilya-S-Zharskiy
LOL code psexec ansible Powershell.PS1
https://raw.githubusercontent.com/ansible/ansible/devel/lib/ansible/modules/windows/win_psexec.ps1

$spec = @{
    options = @{
        command = @{ type='str'; required=$true }
        executable = @{ type='path'; default='psexec.exe' }
        hostnames = @{ type='list' }
        username = @{ type='str' }
        password = @{ type='str'; no_log=$true }
        chdir = @{ type='path' }
        wait = @{ type='bool'; default=$true }
        nobanner = @{ type='bool'; default=$false }
        noprofile = @{ type='bool'; default=$false }
        elevated = @{ type='bool'; default=$false }
        limited = @{ type='bool'; default=$false }
        system = @{ type='bool'; default=$false }
        interactive = @{ type='bool'; default=$false }
        session = @{ type='int' }
        priority = @{ type='str'; choices=@( 'background', 'low', 'belownormal', 'abovenormal', 'high', 'realtime' ) }
        timeout = @{ type='int' }
        extra_opts = @{ type='list' }
    }
}

$module = [Ansible.Basic.AnsibleModule]::Create($args, $spec)

$command = $module.Params.command
$executable = $module.Params.executable
$hostnames = $module.Params.hostnames
$username = $module.Params.username
$password = $module.Params.password
$chdir = $module.Params.chdir
$wait = $module.Params.wait
$nobanner = $module.Params.nobanner
$noprofile = $module.Params.noprofile
$elevated = $module.Params.elevated
$limited = $module.Params.limited
$system = $module.Params.system
$interactive = $module.Params.interactive
$session = $module.Params.session
$priority = $module.Params.Priority
$timeout = $module.Params.timeout
$extra_opts = $module.Params.extra_opts

$module.Result.changed = $true

If (-Not (Get-Command $executable -ErrorAction SilentlyContinue)) {
    $module.FailJson("Executable '$executable' was not found.")
}

$arguments = @()

If ($nobanner -eq $true) {
    $arguments += "-nobanner"
}

# Support running on local system if no hostname is specified
If ($hostnames) {
    $hostname_argument = ($hostnames | sort -Unique) -join ','
    $arguments += "\\$hostname_argument"
}

# Username is optional
If ($username -ne $null) {
    $arguments += "-u"
    $arguments += $username
}

# Password is optional
If ($password -ne $null) {
    $arguments += "-p"
    $arguments += $password
}

If ($chdir -ne $null) {
    $arguments += "-w"
    $arguments += $chdir
}

If ($wait -eq $false) {
    $arguments += "-d"
}

If ($noprofile -eq $true) {
    $arguments += "-e"
}

If ($elevated -eq $true) {
    $arguments += "-h"
}

If ($system -eq $true) {
    $arguments += "-s"
}

If ($interactive -eq $true) {
    $arguments += "-i"
    If ($session -ne $null) {
        $arguments += $session
    }
}

If ($limited -eq $true) {
    $arguments += "-l"
}

If ($priority -ne $null) {
    $arguments += "-$priority"
}

If ($timeout -ne $null) {
    $arguments += "-n"
    $arguments += $timeout
}

# Add additional advanced options
If ($extra_opts) {
    ForEach ($opt in $extra_opts) {
        $arguments += $opt
    }
}

$arguments += "-accepteula"

$argument_string = Argv-ToString -arguments $arguments

# Add the command at the end of the argument string, we don't want to escape
# that as psexec doesn't expect it to be one arg
$argument_string += " $command"

$start_datetime = [DateTime]::UtcNow
$module.Result.psexec_command = "$executable $argument_string"

$command_result = Run-Command -command "$executable $argument_string"

$end_datetime = [DateTime]::UtcNow

$module.Result.stdout = $command_result.stdout
$module.Result.stderr = $command_result.stderr

If ($wait -eq $true) {
    $module.Result.rc = $command_result.rc
} else {
    $module.Result.rc = 0
    $module.Result.pid = $command_result.rc
}

$module.Result.start = $start_datetime.ToString("yyyy-MM-dd hh:mm:ss.ffffff")
$module.Result.end = $end_datetime.ToString("yyyy-MM-dd hh:mm:ss.ffffff")
$module.Result.delta = $($end_datetime - $start_datetime).ToString("h\:mm\:ss\.ffffff")

$module.ExitJson()
don-Rumata
Windows soft code ansible
Если ваш ansible посылает вас при установке софта на windows 10 ошибкой вида:

"msg": "the file at the UNC path \\\\server\\soft\\google\\google-chrome-AMD64.msi cannot be reached, ensure the user_name account has access to this path or use an auth transport with credential delegation"

добавьте в таск эти волшебные строки:

become: yes
become_method: runas
become_flags: logon_type=new_credentials logon_flags=netcredentials_only

Найдено в https://www.bloggingforlogging.com/2018/01/24/demystifying-winrm/
gbdj
ansible А как в ансибле таки получить доступ до дерева групп хостов в том виде как оно определено в файле конфига hosts, в дополнение к существующей переменной groups с уже плоским членством хостов в каждой существующей группе. Интепесует именно членство групп хостов в группах хостов. Разработчики на гитхабу только неубелительно блеют что мы оказывается не должны такого хотель. Почему нельзя просто без истерики отдать структуру которая все равно создается при парсе конфига?
Zert
Python ansible Обновил ансибл до 2.0.0, стало работать в три раза быстре, но периодически появляются такие ошибки на случайных разных хостах:
fatal: [my.host.name]: FAILED! => {"failed": true, "msg": "ERROR! failed to resolve remote temporary directory from ansible-tmp-1452677063.08-205895277466160: `mkdir -p \"$( echo $HOME/.ansible/tmp/ansible-tmp-1452677063.08-205895277466160 )\" && echo
\"$( echo $HOME/.ansible/tmp/ansible-tmp-1452677063.08-205895277466160 )\"` returned empty string"}

Пока не понял, что делать, чтобы от этого избавиться. Кто-нибудь знает?
Zert
Linux admin ansible Похоже, надо на что-то другое переходить. Как-то у него параллелизация странно работает, чем больше серверов, тем больше задачи выполняются. Поставил параметр форка в 40, ничего не изменилось.
Zert
admin ansible Как анзиблом создать, допустим, 10 виртуалок на Digital Ocean (есть модуль digital_ocean), и потом работать с ними? Что-то не пойму, как массово создавать.
schors
lytdybr ansible что-то у меня творческий кризис. как назвать пользователя, которым ansible на сервера ходит? ninja? sprut? mafia? nlo? master? кстати, сколько ОС меня анально покарают за подчеркивания в имени пользователя?
SpringStorm
devops docker ansible А ansible 1.7 и 1.9 сильно отличаются =) никто не посоветует случаем как лучше сделать docker pull image из приватного репозитория с помощью ansible? Или ещё какие способы, как образ загрузить на десяток серверов. можно конечно Dockerfile написать, но пока не пробовала.
TPAKTOP
боль ansible Настоятельно порекомендовали заюзать ансибл заместо rex и chef. Начал пробовать писать плейбуки. Работа с версиями пакетов идет через жопу например нет возможности выставить версию пакета выше которой тебя удовлетворяет, только либо равно либо последняя. Если у тебя как вариант стоит версия zabbix-agent-2.2.6 то установка верисии равной 2.0.9 — прокатит(бужет говорить что уже установлено); 2.0.10 — нет; 2.2.4 прокатит.
Экспорт из свн не работает, так-же как и не работает параметр force ни для экспорта ни для чекаута. Малейший шаг влево-вправо падаем с ошибкой. Копирования папки на удаленном сервере нет, есть только copy работает только для копирования с локального на удаленный сервер. synchronize (он же rsync) не работает локально просит пароли при рсинке с папки в папку. в итоге гуглим как скопировать получаем единственный вариант command: mv /path/to/foo /path/to/bar, но нафига тогда система если таким образом все можно запилить баш скриптом и командами.
И это только начало, я уже боюсь копать дальше чтобы не тратить время.
schors
FreeBSD вопрос ansible уточняю вопрос. нагуглить не могу второй день. мне нужен модуль к ansible, который в rc.conf (именно в самом конфиге делает) добавляет, удаляет ip-адрес. собственно там сложность с обыгрышем алиасов, масок и групповым заданием адресов. или писать свой?
schors
вопрос ansible слушайте. а есть у кого-нибудь пример поднять/опустить IP-адрес на ansible? я конечно же хочу, чтобы это в конфиге осталось. да хоть linux, хоть freebsd. мне для понимания