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

— Что ты делал до того как начал ковырять ansible?
— Винду настраивал, софт ставил.
— А теперь?
— Винду настраиваю, софт ставлю.
— А что поменялось?
— Да всё.
Ilya-S-Zharskiy
psexec ansible code Powershell.PS1 LOL
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
ansible code Windows soft
Если ваш 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
ansible Python Обновил ансибл до 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
ansible Linux admin Похоже, надо на что-то другое переходить. Как-то у него параллелизация странно работает, чем больше серверов, тем больше задачи выполняются. Поставил параметр форка в 40, ничего не изменилось.
Zert
ansible admin Как анзиблом создать, допустим, 10 виртуалок на Digital Ocean (есть модуль digital_ocean), и потом работать с ними? Что-то не пойму, как массово создавать.
schors
ansible lytdybr что-то у меня творческий кризис. как назвать пользователя, которым ansible на сервера ходит? ninja? sprut? mafia? nlo? master? кстати, сколько ОС меня анально покарают за подчеркивания в имени пользователя?
SpringStorm
docker ansible devops А 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
ansible вопрос FreeBSD уточняю вопрос. нагуглить не могу второй день. мне нужен модуль к ansible, который в rc.conf (именно в самом конфиге делает) добавляет, удаляет ip-адрес. собственно там сложность с обыгрышем алиасов, масок и групповым заданием адресов. или писать свой?
schors
ansible вопрос слушайте. а есть у кого-нибудь пример поднять/опустить IP-адрес на ansible? я конечно же хочу, чтобы это в конфиге осталось. да хоть linux, хоть freebsd. мне для понимания