hemi网站怎么做热图,wordpress分类目录id,网站建设思维导图的要求,大连网站建设大全背景#xff1a;想要练习ansible使用#xff0c;用于面试#xff0c;结果使用centos 8 的yum安装失败#xff0c;提示版本不兼容#xff08;指的是python版本#xff09;#xff0c;故而使用python来安装指定版本的ansible#xff0c;特此记录
环境#xff1a;win11虚…背景想要练习ansible使用用于面试结果使用centos 8 的yum安装失败提示版本不兼容指的是python版本故而使用python来安装指定版本的ansible特此记录
环境win11虚拟机、centos 8.2、ansible 4.9.0、python 3.6.8
1、使用pip方式直接安装建议使用国内源
pip3 install ansible4.9.02、测试安装是否成功
ansible --version
显示以下内容说明成功了
ansible [core 2.11.12] config file Noneconfigured module search path [/root/.ansible/plugins/modules, /usr/share/ansible/plugins/modules]ansible python module location /usr/local/lib/python3.6/site-packages/ansibleansible collection location /root/.ansible/collections:/usr/share/ansible/collectionsexecutable location /usr/local/bin/ansiblepython version 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]jinja version 3.0.3libyaml True其中config file None 说明配置文件未生成需要自己配置/etc/ansible/ansible.cfg
下面是默认配置文件内容 # config file for ansible -- https://ansible.com/
# # nearly all parameters can be overridden in ansible-playbook
# or with command line flags. ansible will read ANSIBLE_CONFIG,
# ansible.cfg in the current working directory, .ansible.cfg in
# the home directory or /etc/ansible/ansible.cfg, whichever it
# finds first[defaults]# some basic default values...inventory /etc/ansible/hosts
#library /usr/share/my_modules/
#module_utils /usr/share/my_module_utils/
#remote_tmp ~/.ansible/tmp
#local_tmp ~/.ansible/tmp
#plugin_filters_cfg /etc/ansible/plugin_filters.yml
forks 10
#poll_interval 15
#sudo_user root
#ask_sudo_pass True
#ask_pass True
#transport smart
#remote_port 22
#module_lang C
#module_set_locale False# plays will gather facts by default, which contain information about
# the remote system.
#
# smart - gather by default, but dont regather if already gathered
# implicit - gather by default, turn off with gather_facts: False
# explicit - do not gather by default, must say gather_facts: True
#gathering implicit# This only affects the gathering done by a plays gather_facts directive,
# by default gathering retrieves all facts subsets
# all - gather all subsets
# network - gather min and network facts
# hardware - gather hardware facts (longest facts to retrieve)
# virtual - gather min and virtual facts
# facter - import facts from facter
# ohai - import facts from ohai
# You can combine them using comma (ex: network,virtual)
# You can negate them using ! (ex: !hardware,!facter,!ohai)
# A minimal set of facts is always gathered.
#gather_subset all# some hardware related facts are collected
# with a maximum timeout of 10 seconds. This
# option lets you increase or decrease that
# timeout to something more suitable for the
# environment.
# gather_timeout 10# Ansible facts are available inside the ansible_facts.* dictionary
# namespace. This setting maintains the behaviour which was the default prior
# to 2.5, duplicating these variables into the main namespace, each with a
# prefix of ansible_.
# This variable is set to True by default for backwards compatibility. It
# will be changed to a default of False in a future release.
# ansible_facts.
# inject_facts_as_vars True# additional paths to search for roles in, colon separated
#roles_path /etc/ansible/roles# uncomment this to disable SSH key host checking
host_key_checking False# change the default callback, you can only have one stdout type enabled at a time.
#stdout_callback skippy## Ansible ships with some plugins that require whitelisting,
## this is done to avoid running all of a type by default.
## These setting lists those that you want enabled for your system.
## Custom plugins should not need this unless plugin author specifies it.# enable callback plugins, they can output to stdout but cannot be stdout type.
#callback_whitelist timer, mail# Determine whether includes in tasks and handlers are static by
# default. As of 2.0, includes are dynamic by default. Setting these
# values to True will make includes behave more like they did in the
# 1.x versions.
#task_includes_static False
#handler_includes_static False# Controls if a missing handler for a notification event is an error or a warning
#error_on_missing_handler True# change this for alternative sudo implementations
#sudo_exe sudo# What flags to pass to sudo
# WARNING: leaving out the defaults might create unexpected behaviours
#sudo_flags -H -S -n# SSH timeout
#timeout 10# default user to use for playbooks if user is not specified
# (/usr/bin/ansible will use current user as default)
#remote_user root# logging is off by default unless this path is defined
# if so defined, consider logrotate
#log_path /var/log/ansible.log# default module name for /usr/bin/ansible
#module_name command# use this shell for commands executed under sudo
# you may need to change this to bin/bash in rare instances
# if sudo is constrained
#executable /bin/sh# if inventory variables overlap, does the higher precedence one win
# or are hash values merged together? The default is replace but
# this can also be set to merge.
#hash_behaviour replace# by default, variables from roles will be visible in the global variable
# scope. To prevent this, the following option can be enabled, and only
# tasks and handlers within the role will see the variables there
#private_role_vars yes# list any Jinja2 extensions to enable here:
#jinja2_extensions jinja2.ext.do,jinja2.ext.i18n# if set, always use this private key file for authentication, same as
# if passing --private-key to ansible or ansible-playbook
#private_key_file /path/to/file# If set, configures the path to the Vault password file as an alternative to
# specifying --vault-password-file on the command line.
#vault_password_file /path/to/vault_password_file# format of string {{ ansible_managed }} available within Jinja2
# templates indicates to users editing templates files will be replaced.
# replacing {file}, {host} and {uid} and strftime codes with proper values.
#ansible_managed Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}
# {file}, {host}, {uid}, and the timestamp can all interfere with idempotence
# in some situations so the default is a static string:
#ansible_managed Ansible managed# by default, ansible-playbook will display Skipping [host] if it determines a task
# should not be run on a host. Set this to False if you dont want to see these Skipping
# messages. NOTE: the task header will still be shown regardless of whether or not the
# task is skipped.
#display_skipped_hosts True# by default, if a task in a playbook does not include a name: field then
# ansible-playbook will construct a header that includes the tasks action but
# not the tasks args. This is a security feature because ansible cannot know
# if the *module* considers an argument to be no_log at the time that the
# header is printed. If your environment doesnt have a problem securing
# stdout from ansible-playbook (or you have manually specified no_log in your
# playbook on all of the tasks where you have secret information) then you can
# safely set this to True to get more informative messages.
#display_args_to_stdout False# by default (as of 1.3), Ansible will raise errors when attempting to dereference
# Jinja2 variables that are not set in templates or action lines. Uncomment this line
# to revert the behavior to pre-1.3.
#error_on_undefined_vars False# by default (as of 1.6), Ansible may display warnings based on the configuration of the
# system running ansible itself. This may include warnings about 3rd party packages or
# other conditions that should be resolved if possible.
# to disable these warnings, set the following value to False:
#system_warnings True# by default (as of 1.4), Ansible may display deprecation warnings for language
# features that should no longer be used and will be removed in future versions.
# to disable these warnings, set the following value to False:
#deprecation_warnings True# (as of 1.8), Ansible can optionally warn when usage of the shell and
# command module appear to be simplified by using a default Ansible module
# instead. These warnings can be silenced by adjusting the following
# setting or adding warnyes or warnno to the end of the command line
# parameter string. This will for example suggest using the git module
# instead of shelling out to the git command.
# command_warnings False# set plugin path directories here, separate with colons
#action_plugins /usr/share/ansible/plugins/action
#become_plugins /usr/share/ansible/plugins/become
#cache_plugins /usr/share/ansible/plugins/cache
#callback_plugins /usr/share/ansible/plugins/callback
#connection_plugins /usr/share/ansible/plugins/connection
#lookup_plugins /usr/share/ansible/plugins/lookup
#inventory_plugins /usr/share/ansible/plugins/inventory
#vars_plugins /usr/share/ansible/plugins/vars
#filter_plugins /usr/share/ansible/plugins/filter
#test_plugins /usr/share/ansible/plugins/test
#terminal_plugins /usr/share/ansible/plugins/terminal
#strategy_plugins /usr/share/ansible/plugins/strategy# by default, ansible will use the linear strategy but you may want to try
# another one
#strategy free# by default callbacks are not loaded for /bin/ansible, enable this if you
# want, for example, a notification or logging callback to also apply to
# /bin/ansible runs
#bin_ansible_callbacks False# dont like cows? thats unfortunate.
# set to 1 if you dont want cowsay support or export ANSIBLE_NOCOWS1
#nocows 1# set which cowsay stencil youd like to use by default. When set to random,
# a random stencil will be selected for each task. The selection will be filtered
# against the cow_whitelist option below.
#cow_selection default
#cow_selection random# when using the random option for cowsay, stencils will be restricted to this list.
# it should be formatted as a comma-separated list with no spaces between names.
# NOTE: line continuations here are for formatting purposes only, as the INI parser
# in python does not support them.
#cow_whitelistbud-frogs,bunny,cheese,daemon,default,dragon,elephant-in-snake,elephant,eyes,\
# hellokitty,kitty,luke-koala,meow,milk,moofasa,moose,ren,sheep,small,stegosaurus,\
# stimpy,supermilker,three-eyes,turkey,turtle,tux,udder,vader-koala,vader,www# dont like colors either?
# set to 1 if you dont want colors, or export ANSIBLE_NOCOLOR1
#nocolor 1# if set to a persistent type (not memory, for example redis) fact values
# from previous runs in Ansible will be stored. This may be useful when
# wanting to use, for example, IP information from one group of servers
# without having to talk to them in the same playbook run to get their
# current IP information.
#fact_caching memory#This option tells Ansible where to cache facts. The value is plugin dependent.
#For the jsonfile plugin, it should be a path to a local directory.
#For the redis plugin, the value is a host:port:database triplet: fact_caching_connection localhost:6379:0#fact_caching_connection/tmp# retry files
# When a playbook fails a .retry file can be created that will be placed in ~/
# You can enable this feature by setting retry_files_enabled to True
# and you can change the location of the files by setting retry_files_save_path#retry_files_enabled False
#retry_files_save_path ~/.ansible-retry# squash actions
# Ansible can optimise actions that call modules with list parameters
# when looping. Instead of calling the module once per with_ item, the
# module is called once with all items at once. Currently this only works
# under limited circumstances, and only with parameters named name.
#squash_actions apk,apt,dnf,homebrew,pacman,pkgng,yum,zypper# prevents logging of task data, off by default
#no_log False# prevents logging of tasks, but only on the targets, data is still logged on the master/controller
#no_target_syslog False# controls whether Ansible will raise an error or warning if a task has no
# choice but to create world readable temporary files to execute a module on
# the remote machine. This option is False by default for security. Users may
# turn this on to have behaviour more like Ansible prior to 2.1.x. See
# https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user
# for more secure ways to fix this than enabling this option.
#allow_world_readable_tmpfiles False# controls the compression level of variables sent to
# worker processes. At the default of 0, no compression
# is used. This value must be an integer from 0 to 9.
#var_compression_level 9# controls what compression method is used for new-style ansible modules when
# they are sent to the remote system. The compression types depend on having
# support compiled into both the controllers python and the clients python.
# The names should match with the python Zipfile compression types:
# * ZIP_STORED (no compression. available everywhere)
# * ZIP_DEFLATED (uses zlib, the default)
# These values may be set per host via the ansible_module_compression inventory
# variable
#module_compression ZIP_DEFLATED# This controls the cutoff point (in bytes) on --diff for files
# set to 0 for unlimited (RAM may suffer!).
#max_diff_size 1048576# This controls how ansible handles multiple --tags and --skip-tags arguments
# on the CLI. If this is True then multiple arguments are merged together. If
# it is False, then the last specified argument is used and the others are ignored.
# This option will be removed in 2.8.
#merge_multiple_cli_flags True# Controls showing custom stats at the end, off by default
#show_custom_stats True# Controls which files to ignore when using a directory as inventory with
# possibly multiple sources (both static and dynamic)
#inventory_ignore_extensions ~, .orig, .bak, .ini, .cfg, .retry, .pyc, .pyo# This family of modules use an alternative execution path optimized for network appliances
# only update this setting if you know how this works, otherwise it can break module execution
#network_group_moduleseos, nxos, ios, iosxr, junos, vyos# When enabled, this option allows lookups (via variables like {{lookup(foo)}} or when used as
# a loop with with_foo) to return data that is not marked unsafe. This means the data may contain
# jinja2 templating language which will be run through the templating engine.
# ENABLING THIS COULD BE A SECURITY RISK
#allow_unsafe_lookups False# set default errors for all plays
#any_errors_fatal False[inventory]
# enable inventory plugins, default: host_list, script, auto, yaml, ini, toml
#enable_plugins host_list, virtualbox, yaml, constructed# ignore these extensions when parsing a directory as inventory source
#ignore_extensions .pyc, .pyo, .swp, .bak, ~, .rpm, .md, .txt, ~, .orig, .ini, .cfg, .retry# ignore files matching these patterns when parsing a directory as inventory source
#ignore_patterns# If true unparsed inventory sources become fatal errors, they are warnings otherwise.
#unparsed_is_failedFalse[privilege_escalation]
#becomeTrue
#become_methodsudo
#become_userroot
#become_ask_passFalse[paramiko_connection]# uncomment this line to cause the paramiko connection plugin to not record new host
# keys encountered. Increases performance on new host additions. Setting works independently of the
# host key checking setting above.
#record_host_keysFalse# by default, Ansible requests a pseudo-terminal for commands executed under sudo. Uncomment this
# line to disable this behaviour.
#ptyFalse# paramiko will default to looking for SSH keys initially when trying to
# authenticate to remote devices. This is a problem for some network devices
# that close the connection after a key failure. Uncomment this line to
# disable the Paramiko look for keys function
#look_for_keys False# When using persistent connections with Paramiko, the connection runs in a
# background process. If the host doesnt already have a valid SSH key, by
# default Ansible will prompt to add the host key. This will cause connections
# running in background processes to fail. Uncomment this line to have
# Paramiko automatically add host keys.
#host_key_auto_add True[ssh_connection]# ssh arguments to use
# Leaving off ControlPersist will result in poor performance, so use
# paramiko on older platforms rather than removing it, -C controls compression use
#ssh_args -C -o ControlMasterauto -o ControlPersist60s# The base directory for the ControlPath sockets.
# This is the %(directory)s in the control_path option
#
# Example:
# control_path_dir /tmp/.ansible/cp
#control_path_dir ~/.ansible/cp# The path to use for the ControlPath sockets. This defaults to a hashed string of the hostname,
# port and username (empty string in the config). The hash mitigates a common problem users
# found with long hostnames and the conventional %(directory)s/ansible-ssh-%%h-%%p-%%r format.
# In those cases, a too long for Unix domain socket ssh error would occur.
#
# Example:
# control_path %(directory)s/%%h-%%r
#control_path # Enabling pipelining reduces the number of SSH operations required to
# execute a module on the remote server. This can result in a significant
# performance improvement when enabled, however when using sudo: you must
# first disable requiretty in /etc/sudoers
#
# By default, this option is disabled to preserve compatibility with
# sudoers configurations that have requiretty (the default on many distros).
#
#pipelining False# Control the mechanism for transferring files (old)
# * smart try sftp and then try scp [default]
# * True use scp only
# * False use sftp only
#scp_if_ssh smart# Control the mechanism for transferring files (new)
# If set, this will override the scp_if_ssh option
# * sftp use sftp to transfer files
# * scp use scp to transfer files
# * piped use dd over SSH to transfer files
# * smart try sftp, scp, and piped, in that order [default]
#transfer_method smart# if False, sftp will not use batch mode to transfer files. This may cause some
# types of file transfer failures impossible to catch however, and should
# only be disabled if your sftp version has problems with batch mode
#sftp_batch_mode False# The -tt argument is passed to ssh when pipelining is not enabled because sudo
# requires a tty by default.
#usetty True# Number of times to retry an SSH connection to a host, in case of UNREACHABLE.
# For each retry attempt, there is an exponential backoff,
# so after the first attempt there is 1s wait, then 2s, 4s etc. up to 30s (max).
#retries 3[persistent_connection]# Configures the persistent connection timeout value in seconds. This value is
# how long the persistent connection will remain idle before it is destroyed.
# If the connection doesnt receive a request before the timeout value
# expires, the connection is shutdown. The default value is 30 seconds.
#connect_timeout 30# The command timeout value defines the amount of time to wait for a command
# or RPC call before timing out. The value for the command timeout must
# be less than the value of the persistent connection idle timeout (connect_timeout)
# The default value is 30 second.
#command_timeout 30[accelerate]
#accelerate_port 5099
#accelerate_timeout 30
#accelerate_connect_timeout 5.0# The daemon timeout is measured in minutes. This time is measured
# from the last activity to the accelerate daemon.
#accelerate_daemon_timeout 30# If set to yes, accelerate_multi_key will allow multiple
# private keys to be uploaded to it, though each user must
# have access to the system via SSH to add a new key. The default
# is no.
#accelerate_multi_key yes[selinux]
# file systems that require special treatment when dealing with security context
# the default behaviour that copies the existing context or uses the user default
# needs to be changed to use the file system dependent context.
#special_context_filesystemsnfs,vboxsf,fuse,ramfs,9p,vfat# Set this to yes to allow libvirt_lxc connections to work without SELinux.
#libvirt_lxc_noseclabel yes[colors]
#highlight white
#verbose blue
#warn bright purple
#error red
#debug dark gray
#deprecate purple
#skip cyan
#unreachable red
#ok green
#changed yellow
#diff_add green
#diff_remove red
#diff_lines cyan[diff]
# Always print diff when running ( same as always running with -D/--diff )
# always no# Set how many context lines to show in diff
# context 3
scp_if_sshTrue 再次执行ansible --version 则显示配置文件路径了如下
ansible [core 2.11.12] config file /etc/ansible/ansible.cfgconfigured module search path [/root/.ansible/plugins/modules, /usr/share/ansible/plugins/modules]ansible python module location /usr/local/lib/python3.6/site-packages/ansibleansible collection location /root/.ansible/collections:/usr/share/ansible/collectionsexecutable location /usr/local/bin/ansiblepython version 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]jinja version 3.0.3libyaml True3、测试
开启一台服务器作为测试IP为192.168.37.5
配置主机清单文件/etc/ansible/hosts,内容如下
[webtest]
192.168.37.[4:6] ansible_ssh_userjack ansible_ssh_passroot下载sshpass并安装https://nchc.dl.sourceforge.net/project/sshpass/sshpass/1.10/sshpass-1.10.tar.gz
下载后解压使用源码安装
安装gcc等
yum -y install gcc gcc-c make 解压并切换目录到sshpass根目录下执行
./configure
make make install 参考https://blog.csdn.net/weixin_42405670/article/details/127191983
执行命令ansible webtest -m ping如下
192.168.37.5 | SUCCESS {ansible_facts: {discovered_interpreter_python: /usr/libexec/platform-python},changed: false,ping: pong
}
192.168.37.6 | UNREACHABLE! {changed: false,msg: Failed to connect to the host via ssh: ssh: connect to host 192.168.37.6 port 22: No route to host,unreachable: true
}
192.168.37.4 | UNREACHABLE! {changed: false,msg: Invalid/incorrect password: Permission denied, please try again.,unreachable: true
}只有5是通的其他均不存在告一段落
学习参考https://www.cnblogs.com/keerya/p/7987886.html