我有一个将 Keycloak 用于 IdM 的 Web 应用程序。
我正在使用 资源所有者密码凭据或直接授予流程进行身份验证,它使用 REST API 调用/auth/realms/{realm}/protocol/openid-connect/token而不是浏览器重定向来为用户获取 JWT。
我想为用户注册实施类似的工作流程。
查看 Keycloak 文档,似乎 Keycloak Admin API 在/auth/admin/realms/{realm}/users公开了一个端点。
要允许客户端与 Keycloak Admin API 交互,您必须创建一个客户端服务帐户并将其与具有足够权限来管理领域用户的 keycloak 角色相关联。
对此的预期方法似乎是将管理用户领域特定角色应用于客户端服务帐户。这比我想授予客户端的权限多。
有没有办法给予客户服务帐户刚刚创建新用户的能力,而不是完整的权限集自带的管理用户?
我希望能够通过 ssh 访问 OpenShift Pod 中的容器。
我确实知道,我可以简单地使用oc rsh. 但这是基于这样的假设:我在想要通过 ssh 连接到容器的节点上安装了 openshift cli。
但我真正想要实现的是,从未安装 openshift cli 的节点 ssh 进入容器。该节点与 OpenShift 位于同一网络。该节点确实可以访问托管在容器上的 Web 应用程序(仅作为示例)。但我不想通过 Web 访问,而是希望通过 SSH 访问。
有什么办法可以实现这一点吗?
我正在使用 VueJS 并尝试在两个元素上触发鼠标悬停事件,一个元素是另一个元素的子元素。
我无法触发子鼠标悬停事件。看起来父元素正在“覆盖”子 div,并且只注册了父鼠标悬停事件。
var vm = new Vue({
el: '#app',
data: {
hoverTarget: 'none'
},
methods: {
parentHover: function() {
this.hoverTarget = 'parent'
},
childHover: function() {
this.hoverTarget = 'child'
}
}
});Run Code Online (Sandbox Code Playgroud)
#parent {
width: 100px;
height: 100px;
background: #000000;
}
#child {
width: 50px;
height: 50px;
background: #FFFFFF;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
<div id='app'>
<div id='parent' @mouseover="parentHover">
<div id='child' @mouseover="childHover">
</div>
</div>
{{ hoverTarget }}
</div>Run Code Online (Sandbox Code Playgroud)
我正在尝试解析elasticache_factsansible 模块的输出,以“addr1: port1 addr2:port2 ...”形式的字符串提取 IPS 和 memcached 节点的端口(我想将此字符串存储在 configmap 中在应用程序中使用)。
基本上我想从这样的字典列表中获取两个字段“地址”和“端口”:
list1:
- endpoint:
address: "addr1"
port: "port1"
- endpoint:
address: "addr2"
port: "port2"
Run Code Online (Sandbox Code Playgroud)
并像上面一样连接它们。
我有一个丑陋的解决方案,如下所示:
# register the output of the facts to something I know
elasticache_facts:
region: "{{ terraform.region }}"
name: "{{ cluster }}-{{ env }}"
register: elasticache
#declare an empty var in vars file to be used as accumulator
memcache_hosts: ""
# iterate through the list of nodes and append the fields to my …Run Code Online (Sandbox Code Playgroud) 我遇到过两种从kubernetes中的文件创建configmap的语法。
第一个 ;
apiVersion: v1
data:
file1.yaml: |+
parameter1=value1
kind: ConfigMap
metadata:
name: my-configmap
Run Code Online (Sandbox Code Playgroud)
第二个 ;
apiVersion: v1
data:
file1.yaml: | -
parameter1=value1
kind: ConfigMap
metadata:
name: my-configmap
Run Code Online (Sandbox Code Playgroud)
| +和|-有什么区别?
我正在尝试编写一个 Ansible playbook,它将识别 RHEL 机器上新添加的磁盘。计划是在创建新磁盘之前运行剧本并在该时间点缓存磁盘作为事实。创建新磁盘后,将再次运行相同的 playbook,并计算创建磁盘前后磁盘的差异。
例如,lsblk最初返回以下内容:
NAME SIZE TYPE
sda 100G disk
??sda1 1G part
??sda2 99G part
??rhel-root 50G lvm
??rhel-swap 7.9G lvm
??rhel-home 41.1G lvm
sr0 1024M rom
Run Code Online (Sandbox Code Playgroud)
添加 8 个新磁盘后,lsblk返回:
NAME SIZE TYPE
sda 100G disk
??sda1 1G part
??sda2 99G part
??rhel-root 50G lvm
??rhel-swap 7.9G lvm
??rhel-home 41.1G lvm
sdb 18.6G disk
sdc 18.6G disk
sdd 18.6G disk
sde 18.6G disk
sdf 18.6G disk
sdg 18.6G disk
sdh 18.6G disk …Run Code Online (Sandbox Code Playgroud) 将 terraform工作区与本地后端结合使用的预期配置是什么?
本地后端支持工作空间,但似乎您对实际状态的存储位置没有太多控制权。
当您不使用工作区时,您可以path向本地后端提供一个参数来控制状态文件的存储位置。
# Either in main.tf
terraform {
backend "local" {
path = "/path/to/terraform.tfstate
}
}
# Or as a flag
terraform init -backend-config="path=/path/to/terraform.tfstate"
Run Code Online (Sandbox Code Playgroud)
我期望在使用工作区时具有类似的功能,因为您将提供一个目录,path并且工作区将在该目录下创建
例如:
terraform new workspace first
terraform init -backend-config="path=/path/to/terraform.tfstate.d"
terraform apply
terraform new workspace second
terraform init -backend-config="path=/path/to/terraform.tfstate.d"
terraform apply
Run Code Online (Sandbox Code Playgroud)
将导致状态
/path/to/terraform.tfstate.d/first/terraform.tfstate
/path/to/terraform.tfstate.d/second/terraform.tfstate
Run Code Online (Sandbox Code Playgroud)
然而,情况似乎并非如此。看起来本地后端忽略了路径参数并将工作区配置放在工作目录中。
我是否遗漏了什么或者您无法控制本地后端工作区状态?
ansible ×2
kubernetes ×2
automation ×1
configmap ×1
containers ×1
css ×1
html ×1
javascript ×1
jwt ×1
keycloak ×1
oauth-2.0 ×1
openshift ×1
redhat-sso ×1
ssh ×1
terraform ×1
vue.js ×1
yaml ×1