文章
· 十月 28 阅读大约需 4 分钟

配置IRIS Container - CPF merge

CPF merge(合并)

Automating Configuration of InterSystems IRIS with Configuration Merge

CPF merge通过合并一个人工编辑的merge file, 自动的配置新创建的iris instance, 或者修改已有的iris instance。适用于:

  • 修改iris的系统配置(cpf文件中的内容),比如系统参数,创建或者配置用户,角色,权限, 创建或者配置命名空间,数据库; 配置mirror, ECP连接等等。
  • 操作不在cpf文件中的内容,比如 CreateApplication, CreateSSLConfig 等等, 一般是在 [Action]部分实现

Caché 和早期的IRIS版本提供了manifest功能,用来做IRIS实例的配置。 Manifest很繁琐,而且各个版本的配置中有细微的区别,非常难以管理。 如今有了CPF merge, maifest的所有功能都可以在CPF merge实现, 因此manifest在新版IRIS中也就完全被替代了。

figure

执行merge

执行merge可以在操作系统命令行下执行, 如下面的例子

# 第2个参数可选,如果为空,自动使用系统当前的iris.cpf
$ iris merge iris /external/irismerge.conf /usr/irissys/iris.cpf

然而, 在执行docker run命令或者docker-compose里不用这么麻烦。 IRIS镜像提供了一个功能, 通过加入ISC_CPF_MERGE_FILE环境变量,IRIS会自动实现CPF合并。 比如下面的compose配置:

iris2024:      
        image: containers.intersystems.com/intersystems/irishealth-arm64:2024.1
        container_name: iris-a
        volumes:
            - ./iris2024:/external
        environment: 
            - TZ=CST-8
            - ISC_CPF_MERGE_FILE=/external/merge.cpf

IMPORTANT:

当使用配置合并部署容器时(如 使用合并文件部署 InterSystems IRIS 容器 中所述),只要容器在运行,ISC_CPF_MERGE_FILE(它在容器中是持久的)指定的合并文件就会持续受到更新监控,更新发生时,iris 合并命令会立即对其进行合并。这意味着您可以随时通过更新合并文件来更新容器化实例的配置,从而更容易自动重新配置容器化实例和群集。

merge文件的Example

配置IRIS参数

[config]
bbsiz=-1
globals=0,0,1024,0,0,0
routines=512
gmheap=256000

[SQL]
DefaultSchema=user
TimePrecision=6

[SqlSysDatatypes]
TIMESTAMP=%Library.PosixTime

创建用户和权限

CreateUser:Name=SQLAdmin,PasswordHash=fce110ae1f79b9d7e20367a3352efeb48ef22cc8810c4598791f3fb752eabcfe7b2d9ce75099e626b03a62fc6a146f1ca772789ebbcea276674c558c63af4f7b,9ffbbc8ef25086e4d4da87e20c6ea43e8ebb6d1ab64815aef3b1f7e8964dbd87efe68c8464a6b40865efc7d0d568c601e2a49917326dfd78197b68f1bde59db2,10000,SHA512
GrantAdminPrivilege:Grantee=SQLAdmin,Namespace=USER,AdminPriv="%DB_OBJECT_DEFINITION,%BUILD_INDEX"

CreateUser:Name=CCHUser,Password=Demo1234
GrantAdminPrivilege:Grantee=SQLAdmin,Namespace=HCC,AdminPriv="%DB_HCC,%BUILD_INDEX"

创建命名空间

# part of merge.cpf
[Actions]
CreateResource:Name=%DB_DEMO,Description="The DEMO database"
CreateDatabase:Name=DEMO,Directory=/usr/irissys/mgr/demo,Resource=%DB_DEMO,
CreateNamespace:Name=DEMO,Globals=DEMO,Interop=1

创建Web Application

[Actions]
CreateApplication:Name=/csp/demo, InboundWebServicesEnabled=1, AutheEnabled=1, DispatchClass=HCC.Interface.RestHandler, NameSpace=DEMO
CreateApplication:Name=/csp/demo,NameSpace=HCC,AutheEnabled=36,DispatchClass=HCC.Interface.RestHandler,
CreateApplication:Name=/test2,NameSpace=HCC,AutheEnabled=$$$AuthePassword+$$$AutheUnauthenticated,Enabled=1,Description="test2"
ModifyApplication:Name=/test2,MatchRoles=":%DB_HSCUSTOM:%DB_HSLIB:%DB_IRISSYS:%HS_DB_HCC:%HS_DB_HSSYS",ErrorPage=%CSP.Error

System Security Setting

System > Security Management > Authentication/Web Session Options - (security settings)

  • Allow Unauthentication access
  • Allow O/S authentication
# example
ModifyService:Name=%Service_Monitor,Enabled=1,ClientSystems=192.168.1.1
ModifyService:Name=%Service_DocDB,Enabled=1,AutheEnabled=$$$AuthePassword
ModifyService:Name=%Service_Terminal,AutheEnabled=$$$AuthePassword+$$$AutheUnauthenticated+$$$AutheOS
ModifyService:Name=%Service_Mirror,Enabled=1

其他还有更多的用法,请参见在线文档。

讨论 (0)1
登录或注册以继续