我正在尝试将Ansible与Packer集成以配置Windows客户端。
从Azure管道运行:
- Ubuntu最新版本
- Python 3.8.10
- ansible[核心2.12.4]
- 封隔器1.8.0
在管道中,我尝试安装pywinrm
pip install --ignore-installed pywinrm
但当包装机使用Ansible Provisioner:时仍然会收到此错误
==> azure-arm.windowsvm: Waiting for WinRM to become available...
azure-arm.windowsvm: WinRM connected.
==> azure-arm.windowsvm: Connected to WinRM!
==> azure-arm.windowsvm: Provisioning with Ansible...
azure-arm.windowsvm: Not using Proxy adapter for Ansible run:
azure-arm.windowsvm: Using WinRM Password from Packer communicator...
==> azure-arm.windowsvm: Executing Ansible: ansible-playbook -e packer_build_name="windowsvm" -e packer_builder_type=azure-arm -vvv -e ansible_winrm_server_cert_validation=ignore ansible_python_interpreter=/usr/bin/python3 -e ansible_password=***** -i /tmp/packer-provisioner-ansible141521969 /home/vsts/work/1/s/packer/win10-client/ansible/apb_os.yml
azure-arm.windowsvm: ansible-playbook [core 2.12.4]
azure-arm.windowsvm: config file = None
azure-arm.windowsvm: configured module search path = ['/home/vsts/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
azure-arm.windowsvm: ansible python module location = /opt/pipx/venvs/ansible-core/lib/python3.8/site-packages/ansible
azure-arm.windowsvm: ansible collection location = /home/vsts/.ansible/collections:/usr/share/ansible/collections
azure-arm.windowsvm: executable location = /opt/pipx_bin/ansible-playbook
azure-arm.windowsvm: python version = 3.8.10 (default, Mar 15 2022, 12:22:08) [GCC 9.4.0]
azure-arm.windowsvm: jinja version = 3.1.1
azure-arm.windowsvm: libyaml = True
azure-arm.windowsvm: No config file found; using defaults
azure-arm.windowsvm: host_list declined parsing /tmp/packer-provisioner-ansible141521969 as it did not pass its verify_file() method
azure-arm.windowsvm: script declined parsing /tmp/packer-provisioner-ansible141521969 as it did not pass its verify_file() method
azure-arm.windowsvm: auto declined parsing /tmp/packer-provisioner-ansible141521969 as it did not pass its verify_file() method
azure-arm.windowsvm: Parsed /tmp/packer-provisioner-ansible141521969 inventory source with ini plugin
azure-arm.windowsvm: redirecting (type: modules) ansible.builtin.win_acl to ansible.windows.win_acl
azure-arm.windowsvm: redirecting (type: modules) ansible.builtin.win_acl to ansible.windows.win_acl
azure-arm.windowsvm: redirecting (type: modules) ansible.builtin.win_acl to ansible.windows.win_acl
azure-arm.windowsvm: redirecting (type: modules) ansible.builtin.win_acl to ansible.windows.win_acl
azure-arm.windowsvm: redirecting (type: modules) ansible.builtin.win_acl to ansible.windows.win_acl
azure-arm.windowsvm: redirecting (type: modules) ansible.builtin.win_acl to ansible.windows.win_acl
azure-arm.windowsvm: Skipping callback 'default', as we already have a stdout callback.
azure-arm.windowsvm: Skipping callback 'minimal', as we already have a stdout callback.
azure-arm.windowsvm: Skipping callback 'oneline', as we already have a stdout callback.
azure-arm.windowsvm:
azure-arm.windowsvm: PLAYBOOK: apb_os.yml ***********************************************************
azure-arm.windowsvm: 1 plays in /home/vsts/work/1/s/packer/win10-client/ansible/apb_os.yml
azure-arm.windowsvm:
azure-arm.windowsvm: PLAY [Provision Image with OS Config] ******************************************
azure-arm.windowsvm:
azure-arm.windowsvm: TASK [Gathering Facts] *********************************************************
azure-arm.windowsvm: task path: /home/vsts/work/1/s/packer/win10-client/ansible/apb_os.yml:1
azure-arm.windowsvm: redirecting (type: modules) ansible.builtin.setup to ansible.windows.setup
azure-arm.windowsvm: Using module file /opt/pipx/venvs/ansible-core/lib/python3.8/site-packages/ansible_collections/ansible/windows/plugins/modules/setup.ps1
azure-arm.windowsvm: Pipelining is enabled.
azure-arm.windowsvm: fatal: [default]: FAILED! => {
azure-arm.windowsvm: "msg": "winrm or requests is not installed: No module named 'winrm'"
azure-arm.windowsvm: }
azure-arm.windowsvm:
azure-arm.windowsvm: PLAY RECAP *********************************************************************
azure-arm.windowsvm: default : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
这是Packer Ansible Provisioner:
provisioner "ansible" {
playbook_file = "${var.WorkingDirectory}/packer/win10-client/ansible/apb_os.yml"
user = "Admin"
use_proxy = false
extra_arguments = ["-vvv", "-e", "ansible_winrm_server_cert_validation=ignore ansible_python_interpreter=/usr/bin/python3"]
}
我的点子列表
Package Version
---------------------- --------------------
argcomplete 2.0.0
attrs 19.3.0
Automat 0.8.0
blinker 1.4
certifi 2021.10.8
cffi 1.15.0
chardet 3.0.4
charset-normalizer 2.0.12
Click 7.0
cloud-init 22.1
colorama 0.4.3
command-not-found 0.3
configobj 5.0.6
constantly 15.1.0
crcmod 1.7
crit 0.0.1
cryptography 36.0.2
dbus-python 1.2.16
distro 1.4.0
distro-info 0.23ubuntu1
entrypoints 0.3
httplib2 0.14.0
hyperlink 19.0.0
idna 3.3
importlib-metadata 1.5.0
incremental 16.10.1
Jinja2 2.10.1
jsonpatch 1.22
jsonpointer 2.0
jsonschema 3.2.0
keyring 18.0.1
language-selector 0.1
launchpadlib 1.10.13
lazr.restfulclient 0.14.2
lazr.uri 1.0.3
MarkupSafe 1.1.0
more-itertools 4.2.0
netifaces 0.10.4
ntlm-auth 1.5.0
oauthlib 3.1.0
packaging 21.3
pexpect 4.6.0
pip 20.0.2
pipx 1.0.0
protobuf 3.6.1
pyasn1 0.4.2
pyasn1-modules 0.2.1
pycparser 2.21
Pygments 2.3.1
PyGObject 3.36.0
PyHamcrest 1.9.0
PyJWT 1.7.1
pymacaroons 0.13.0
PyNaCl 1.3.0
pyOpenSSL 19.0.0
pyparsing 3.0.7
pyparted 3.11.2
pyrsistent 0.15.5
pyserial 3.4
python-apt 2.0.0+ubuntu0.20.4.7
python-debian 0.1.36ubuntu1
pywinrm 0.4.2
PyYAML 5.3.1
requests 2.27.1
requests-ntlm 1.1.0
requests-unixsocket 0.2.0
SecretStorage 2.3.1
service-identity 18.1.0
setuptools 45.2.0
simplejson 3.16.0
six 1.16.0
sos 4.3
ssh-import-id 5.10
systemd-python 234
Twisted 18.9.0
ubuntu-advantage-tools 27.6
ufw 0.36
urllib3 1.26.9
userpath 1.8.0
wadllib 1.3.3
WALinuxAgent 2.2.46
wheel 0.34.2
xmltodict 0.12.0
zipp 1.0.0
zope.interface 4.7.1
任何指向正确方向的指示都将不胜感激-谢谢!
管道正在运行一个虚拟环境,ansible就是在这个环境中查找pywinrm模块的。
我必须通过使用来激活它
/opt/pipx/venv/ansible-core/bin/activate
可靠的提供者确实会告诉你它在哪里寻找这个模块。
一旦激活,我就可以安装丢失的pywinrm模块,并使其正常工作。
或者,您可以创建脚本,使用ansible provisioner的命令属性在venv中创建和安装所有内容。