我有一个ansible库存,看起来像:
# Create an OSEv3 group that contains the masters and nodes groups
[OSEv3:children]
masters
nodes
# Set variables common for all OSEv3 hosts
[OSEv3:vars]
# SSH user, this user should allow ssh based auth without requiring a password
ansible_ssh_user=centos
# If ansible_ssh_user is not root, ansible_sudo must be set to true
ansible_sudo=true
product_type=openshift
deployment_type=enterprise
# uncomment the following to enable htpasswd authentication; defaults to DenyAllPasswordIdentityProvider
#openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/openshift/openshift-passwd'}]
# host group for masters
[masters]
master.example.com
# host group for nodes, includes region info
[nodes]
master.example.com openshift_node_labels="{'region': 'infra', 'zone': 'default'}"
node1.example.com openshift_node_labels="{'region': 'primary', 'zone': 'east'}"
node2.example.com openshift_node_labels="{'region': 'primary', 'zone': 'west'}"
现在我需要密钥才能使主机可以访问ansible。 我有2把钥匙。一个用于我的主人,一个用于我的节点。如何更改此脚本以告知ansible必须使用哪个密钥?
脚本将在我的主人身上执行。我的主人包含/root/.ssh/
目前我只在private_key_file
中/etc/ansible/ansible.cfg
,但只能为Ansible配置一个标准密钥。
答案 0 :(得分:2)
您可以在广告资源中定义behavioral parameters。在每个主机后面或在单独的<struts>
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.convention.result.path" value="/jsp/" />
<constant name="struts.convention.default.parent.package" value="app-pkg" />
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.custom.i18n.resources" value="messages" />
<constant name="struts.devMode" value="${struts.mode}" />
<constant name="struts.convention.package.locators" value="ihm,actions" />
<!-- <constant name="struts.multipart.saveDir" value="" /> -->
<constant name="struts.multipart.maxSize" value="10000000" />
<package name="app-pkg" extends="json-default,struts-default">
<interceptors>
<interceptor name="exception"
class="amundi.sits.myApp.web.utils.interceptor.ExceptionLoggingInterceptor" />
<interceptor name="i18n"
class="amundi.sits.myApp.web.utils.interceptor.I18nInterceptor" />
<!-- Basic Stack -->
<interceptor-stack name="appBasicStack">
<interceptor-ref name="exception">
<param name="logEnabled">true</param>
<param name="logLevel">ERROR</param>
</interceptor-ref>
<interceptor-ref name="i18n" />
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="servletConfig" />
<interceptor-ref name="prepare">
<param name="excludeMethods">search*</param>
</interceptor-ref>
<interceptor-ref name="checkbox" />
<interceptor-ref name="multiselect" />
<interceptor-ref name="actionMappingParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
</interceptor-stack>
<interceptor-stack name="appStack">
<interceptor-ref name="appBasicStack" />
<interceptor-ref name="conversionError" />
<interceptor-ref name="validation" />
<interceptor-ref name="workflow" />
</interceptor-stack>
<interceptor-stack name="annotatedStack">
<interceptor-ref name="i18n" />
<interceptor-ref name="params" />
<interceptor-ref name="conversionError" />
<interceptor-ref name="annotationWorkflow" />
</interceptor-stack>
<!-- Stack basique qui priorise les params sur le prepare -->
<interceptor-stack name="paramsFirstStack">
<interceptor-ref name="i18n" />
<interceptor-ref name="exception">
<param name="logEnabled">true</param>
<param name="logLevel">ERROR</param>
</interceptor-ref>
<interceptor-ref name="checkbox" />
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="servletConfig" />
<interceptor-ref name="prepare" />
<interceptor-ref name="actionMappingParams" />
</interceptor-stack>
<!-- Stack Json validation -->
<interceptor-stack name="jsonValidationStack">
<interceptor-ref name="appBasicStack" />
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="jsonValidation" />
<interceptor-ref name="workflow" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="appStack" />
<global-results>
<result name="exception">/jsp/view/error/error.jsp</result>
<result name="login" type="redirect">/Login.action</result>
<result name="accessdenied" type="redirectAction">
<param name="actionName">security/access/accessDenied.action</param>
<param name="namespace">/</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Throwable"
result="exception" />
</global-exception-mappings>
</package>
部分中。由于您有多个共享相同密钥的节点,后者更有意义:
group:vars